Retry DSM control segment creation if Windows indicates access denied.
authorRobert Haas <rhaas@postgresql.org>
Tue, 20 Sep 2016 16:04:41 +0000 (12:04 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 20 Sep 2016 16:04:41 +0000 (12:04 -0400)
commit419113dfdc4c729f6c763cc30a9b02ee68a7da94
tree7315c7f4b1e7e398a3acec68b2633db4b48ffa07
parent45310221a9afccd98e78813459472370ade9dc4c
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>
src/backend/storage/ipc/dsm_impl.c