Re: [bug fix] Suppress "autovacuum: found orphan temp table" message - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: [bug fix] Suppress "autovacuum: found orphan temp table" message |
Date | |
Msg-id | CA+TgmoZhqv8AxUswSudmKBUeR3BGG5KRFSM4gKe6b5+j9RMfnw@mail.gmail.com Whole thread Raw |
In response to | Re: [bug fix] Suppress "autovacuum: found orphan temp table" message (Andres Freund <andres@2ndquadrant.com>) |
Responses |
Re: [bug fix] Suppress "autovacuum: found orphan temp
table" message
Re: [bug fix] Suppress "autovacuum: found orphan temp table" message |
List | pgsql-hackers |
On Tue, Jul 22, 2014 at 6:23 AM, Andres Freund <andres@2ndquadrant.com> wrote: >> Yes, so nobody can convince serious customers that the current behavior >> makes real sense. > > I think you're making lots of noise over a trivial log message. > >> Could you please reconsider this? > > No. Just removing a warning isn't the way to solve this. If you want to > improve things you'll actually need to improve things not just stick > your head into the sand. I've studied this area of the code before, and I would actually proposed to fix this in the opposite way - namely, adopt the logic currently used for the wraparound case, which drops the temp table, even if wraparound is not an issue. The current code seems to be laboring under the impression that there's some benefit to keeping the temporary relation around, which, as far as I can see, there isn't. Now, you could perhaps argue that it's useful for forensics, but that presumes that the situation where a backend fails to crash without cleaning up its temporary relations is exciting enough to merit an investigation, which I believe to be false. RemoveTempRelationsCallback just does this: AbortOutOfAnyTransaction(); StartTransactionCommand(); RemoveTempRelations(myTempNamespace); CommitTransactionCommand(); RemoveTempRelations uses: deleteWhatDependsOn(&object, false); These are pretty high-level operations, and there are all kinds of reasons they could fail. Many of those reasons do indeed involve the system being messed up in some way, but it's likely that the user will know about that for other reasons anyway - e.g. if the cleanup fails because the disk where the files are located has gone read-only at the operating system level, things are going to go downhill in a hurry. When the user restarts, they expect recovery - or other automatic cleanup mechanisms - to put things right. And normally they do: the first backend to get the same backend ID as any orphaned temp schema will clear it out anyway on first use - completely silently - but if it so happens that a crashed backend had a very high backend ID and that temp table usage is relatively uncommon, then the user gets log spam from now and until eternity because of a problem that, in their mind, is already fixed. Even better, they will typically be completely unable to connect the log spam back to the event that triggered it, and will have no idea how to put it right. So while I disagree with MauMau's proposed fix, I agree with him that this error message is useless log spam. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: