diff options
Diffstat (limited to 'src/backend/storage/ipc/sinval.c')
-rw-r--r-- | src/backend/storage/ipc/sinval.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c index d60e6198f51..9177a81604b 100644 --- a/src/backend/storage/ipc/sinval.c +++ b/src/backend/storage/ipc/sinval.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.32 2001/06/01 20:07:16 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.33 2001/06/16 22:58:13 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -43,13 +43,15 @@ CreateSharedInvalidationState(int maxBackends) void InitBackendSharedInvalidationState(void) { + int flag; + SpinAcquire(SInvalLock); - if (!SIBackendInit(shmInvalBuffer)) - { - SpinRelease(SInvalLock); - elog(FATAL, "Backend cache invalidation initialization failed"); - } + flag = SIBackendInit(shmInvalBuffer); SpinRelease(SInvalLock); + if (flag < 0) /* unexpected problem */ + elog(FATAL, "Backend cache invalidation initialization failed"); + if (flag == 0) /* expected problem: MaxBackends exceeded */ + elog(FATAL, "Sorry, too many clients already"); } /* |