On Tue, May 17, 2016 at 4:16 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: > On Mon, May 16, 2016 at 9:45 AM, Michael Paquier <michael.paqu...@gmail.com> > wrote: >> >> On Sun, May 15, 2016 at 3:34 PM, Amit Kapila <amit.kapil...@gmail.com> >> wrote: >> > Sounds sensible, but if we want to that route, shall we have some >> > mechanism >> > such that if retrying it for 10 times (10 is somewhat arbitrary, but we >> > retry 10 times in PGSharedMemoryCreate, so may be there is some >> > consistency) >> > doesn't give us unique name and we are getting EACCES error, then just >> > throw >> > the error instead of more retries. This is to ensure that if the API is >> > returning EACCES due to reason other than duplicate handle, then we >> > won't >> > retry indefinitely. >> >> The logic in win32_shmem.c relies on the fact that a segment will be >> recycled, and the retry is here because it may take time at OS level. >> On top of that it relies on the segment names being unique across >> systems. So it seems to me that it is not worth the complication to >> duplicate that logic in the dsm implementation. > > If we don't do retry for fixed number of times, then how will we handle the > case if EACCES is due to the reason other than duplicate handle?
EACCES is a bit too low-level... I had in mind to check GetLastError with only ERROR_ACCESS_DENIED, and retry only in this case, which is the case where one postmaster is trying to access the segment of another. -- Michael -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers