Heikki Linnakangas <heikki.linnakan...@enterprisedb.com> writes:
> Here's a patch implementing that, and changing pgrename() to check for
> ERROR_SHARING_VIOLATION and ERROR_LOCK_VIOLATION like pgwin32_open()
> does, instead of ERROR_ACCESS_DENIED.

This looks sane in a quick once-over, though I haven't tested it.
One tiny stylistic suggestion:

                if (err != ERROR_SHARING_VIOLATION &&
                        err != ERROR_LOCK_VIOLATION)
 #else
                if (errno != EACCES)
 #endif
                        return -1;
                if (++loops > 300)              /* time out after 30 sec */
                        return -1;

This is overly cute and will probably confuse both pgindent and ordinary
editors.  It's worth one extra line to keep each part of the #if
syntactically independent, ie

                if (err != ERROR_SHARING_VIOLATION &&
                        err != ERROR_LOCK_VIOLATION)
                        return -1;
 #else
                if (errno != EACCES)
                        return -1;
 #endif
                if (++loops > 300)              /* time out after 30 sec */
                        return -1;


> I wonder if we should reduce the timeout in pgrename(). It's 30 s at the
> moment, but apparently it hasn't been working correctly, failing
> immediately instead if the file is locked.

I have a vague recollection that there was a specific reason for having
such a long timeout --- you might want to check the archives to see the
discussion before that code got committed.  However, if nothing turns
up, I wouldn't object to reducing it to 5 or 10 sec.

                        regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to