Tom Lane wrote: > Bruce Momjian <[EMAIL PROTECTED]> writes: > > In this way, no one ever has the rename file open while we are holding > > the locks, and we can loop without holding an exclusive lock on > > pg_shadow, and file writes remain in order. > > You're doing this where exactly, and are certain that you are holding no > locks why exactly? And if you aren't holding a lock, what prevents > concurrency bugs?
I am looking now at the relcache file, pg_pwd and pg_group. I am sure I am holding some locks, but not an exclusive lock on e.g. pg_shadow. I am working on a patch now. I don't expect to eliminate the looping for rename, but to eliminate holding exclusive locks while doing the rename to a file actively being read. By using realfile.new, the first rename is only being done on a file that is never opened, just renamed, which should be quick. I can't think of a cleaner solution. -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings