From 8f19603d6c9c5eba386bac4f021bc76407c84d0c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 4 Jun 1999 21:14:46 +0000 Subject: [PATCH] Add startup-time check that -B is not unreasonably small for given number of backends (-N), per recent discussion in pghackers list. --- src/backend/postmaster/postmaster.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 46e224385b..7a88385e49 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.105 1999/05/25 16:10:40 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.106 1999/06/04 21:14:46 tgl Exp $ * * NOTES * @@ -427,7 +427,7 @@ PostmasterMain(int argc, char *argv[]) * means we have to start each backend with a -B # to make * sure they know how many buffers were allocated. */ - NBuffers = atol(optarg); + NBuffers = atoi(optarg); strcat(ExtraOptions, " -B "); strcat(ExtraOptions, optarg); break; @@ -530,9 +530,26 @@ PostmasterMain(int argc, char *argv[]) break; } } + + /* + * Select default values for switches where needed + */ if (PostPortName == -1) PostPortName = pq_getport(); + /* + * Check for invalid combinations of switches + */ + if (NBuffers < 2 * MaxBackends || NBuffers < 16) + { + /* Do not accept -B so small that backends are likely to starve for + * lack of buffers. The specific choices here are somewhat arbitrary. + */ + fprintf(stderr, "%s: -B must be at least twice -N and at least 16.\n", + progname); + exit(1); + } + checkDataDir(DataDir, &DataDirOK); /* issues error messages */ if (!DataDirOK) { -- 2.11.0