Retry DSM control segment creation if Windows indicates access denied.

Robert Haas <rhaas@postgresql.org>

Commit: 6bcd26c43c4f0ef718e984643338ddd5b207f9f9
Author: Robert Haas <rhaas@postgresql.org>
Date: 2016-09-20T16:12:27Z
Releases: 9.6.0
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: <CAA4eK1JyNdMeF-dgrpHozDecpDfsRZUtpCi+1AbtuEkfG3YooQ@mail.gmail.com>

Files

PathChange+/−
src/backend/storage/ipc/dsm_impl.c modified +18 −13