Oh, one more thing. dirmod.c has Win32 source to show the actual hangs
caused by rename/unlink --- just define TEST_VERSION and compile. If
someone wants a binary, let me know.
And sorry I posted to hackers rather than patches, where it belongs.
---------------------------------------------------------------------------
Bruce Momjian wrote:
> Here is my approach to the use of rename/unlink on Win32. The full
> discussion is at:
>
> http://momjian.postgresql.org/cgi-bin/pgtodo?win32
>
> Basically, rename/unlink will fail if the file is opened. You can move
> the open file to another name, but that then requires open to loop in
> case the file is missing.
>
> The following patch loops over rename/unlink every 1/10th of second,
> printing a warning message after 1 second, and printing a completion
> message if a warning message was printed.
>
> I looked at PeerDirect's and SRA's port, and neither provides a better
> method. I looked at PeerDirect's and it actually has some conditional
> code for rename. For example, it has a signal that is sent to all
> backends to inform them to close their open WAL files. I am not sure if
> that is required for us because there is some replication stuff in
> there that we aren't using. Jan? In a few other places, it allows the
> rename to fail.
>
> I am inclined to implement it as shown, then see what delayed
> rename/unlinks we get in testing.
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square,
Pennsylvania19073