Re: [Win32] Problem with rename()

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Peter Brant" <Peter.Brant@wicourts.gov>
Cc: "Bruce Momjian" <pgman@candle.pha.pa.us>, "<Qingqing Zhou" <zhouqq@cs.toronto.edu>, "<Magnus Hagander" <mha@sollentuna.net>, pgsql-bugs@postgresql.org
Date: 2006-04-18T14:50:58Z
Lists: pgsql-bugs
"Peter Brant" <Peter.Brant@wicourts.gov> writes:
> LOG:  could not rename file "pg_xlog/000000010000010A000000BD" to
> "pg_xlog/000000010000010A000000D7", continuing to try
> ...
> Only one process (postgres.exe) is holding a handle to
> pg_xlog/000000010000010A000000BD:
> ...
> The second is similar, except that two postgres.exe processes (and
> nothing else) have the file open:

Hmm, could these be backends that have been sitting idle for some time?
I'd expect a backend to be holding open a handle for whichever WAL
segment it last wrote to.  If the backend sits idle for a couple of
checkpoints while others are advancing the end of WAL, then that segment
could become a target for renaming.

The only workable fix I can think of is to allow the checkpointer to
simply fail to rename this segment and go on about its business,
figuring that we'll be able to rename/delete the WAL segment in some
future checkpoint cycle.  Not sure how messy that would be to implement.

			regards, tom lane