aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/bgworker.c3
-rw-r--r--src/backend/utils/misc/guc.c6
-rw-r--r--src/include/postmaster/bgworker_internals.h7
3 files changed, 13 insertions, 3 deletions
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index 6b2385c4711..9ad3e915db3 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -971,6 +971,9 @@ RegisterDynamicBackgroundWorker(BackgroundWorker *worker,
BackgroundWorkerData->parallel_terminate_count) >=
max_parallel_workers)
{
+ Assert(BackgroundWorkerData->parallel_register_count -
+ BackgroundWorkerData->parallel_terminate_count <=
+ MAX_PARALLEL_WORKER_LIMIT);
LWLockRelease(BackgroundWorkerLock);
return false;
}
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 6e39a676094..9ad8361a9bd 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -57,7 +57,7 @@
#include "parser/scansup.h"
#include "pgstat.h"
#include "postmaster/autovacuum.h"
-#include "postmaster/bgworker.h"
+#include "postmaster/bgworker_internals.h"
#include "postmaster/bgwriter.h"
#include "postmaster/postmaster.h"
#include "postmaster/syslogger.h"
@@ -2713,7 +2713,7 @@ static struct config_int ConfigureNamesInt[] =
NULL
},
&max_parallel_workers_per_gather,
- 2, 0, 1024,
+ 2, 0, MAX_PARALLEL_WORKER_LIMIT,
NULL, NULL, NULL
},
@@ -2723,7 +2723,7 @@ static struct config_int ConfigureNamesInt[] =
NULL
},
&max_parallel_workers,
- 8, 0, 1024,
+ 8, 0, MAX_PARALLEL_WORKER_LIMIT,
NULL, NULL, NULL
},
diff --git a/src/include/postmaster/bgworker_internals.h b/src/include/postmaster/bgworker_internals.h
index 9a2de4f4d04..9e0b0621cf4 100644
--- a/src/include/postmaster/bgworker_internals.h
+++ b/src/include/postmaster/bgworker_internals.h
@@ -16,6 +16,13 @@
#include "lib/ilist.h"
#include "postmaster/bgworker.h"
+/* GUC options */
+
+/*
+ * Maximum possible value of parallel workers.
+ */
+#define MAX_PARALLEL_WORKER_LIMIT 1024
+
/*
* List of background workers, private to postmaster.
*