summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/init/miscinit.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 6cb6db29d9..ba510fa949 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -654,6 +654,7 @@ SetGlobalSession(Oid coordid, int coordpid)
BackendId firstBackend = InvalidBackendId;
int bCount = 0;
int bPids[MaxBackends];
+ unsigned int retry_count = 0;
/* If nothing changed do nothing */
if (MyCoordId == coordid && MyCoordPid == coordpid)
@@ -697,7 +698,14 @@ retry:
*/
if (bCount > 0)
{
- /* XXX sleep ? */
+ /*
+ * Sleep for a short while and try again. Emit a WARNING if we
+ * retry often.
+ */
+ pg_usleep(1000*1000L);
+ if (++retry_count % 100 == 0)
+ elog(WARNING, "Retrying %uth time for the first "
+ "backend to initialise", retry_count);
goto retry;
}
else