Retry DSM control segment creation if Windows indicates access denied.
authorRobert Haas
Tue, 20 Sep 2016 16:04:41 +0000 (12:04 -0400)
committerRobert Haas
Tue, 20 Sep 2016 16:12:36 +0000 (12:12 -0400)
commitc23b2523d3fcc09524e6720d7c2558ba1ee6c239
tree4e59a440f14fd04508bbaaacc6274bbd063184d1
parent476945c451d675cc31cd89bce202b775cef45a8e
Retry DSM control segment creation if Windows indicates access denied.

Otherwise, attempts to run multiple postmasters running on the same
machine may fail, because Windows sometimes returns ERROR_ACCESS_DENIED
rather than ERROR_ALREADY_EXISTS when there is an existing segment.

Hitting this bug is much more likely because of another defect not
fixed by this patch, namely that dsm_postmaster_startup() uses
random() which returns the same value every time.  But that's not
a reason not to fix this.

Kyotaro Horiguchi and Amit Kapila, reviewed by Michael Paquier

Discussion: 
src/backend/storage/ipc/dsm_impl.c