10
10
*
11
11
*
12
12
* IDENTIFICATION
13
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.122 1999/10/06 22:44:25 vadim Exp $
13
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.123 1999/10/08 02:16:22 vadim Exp $
14
14
*
15
15
* NOTES
16
16
*
@@ -169,10 +169,12 @@ static intMaxBackends = DEF_MAXBACKENDS;
169
169
* semaphores, even if you never actually use that many backends.
170
170
*/
171
171
172
- static int NextBackendTag = MAXINT ;/* XXX why count down not up? */
173
- static char * progname = (char * )NULL ;
174
- static char * * real_argv ;
175
- static int real_argc ;
172
+ static int NextBackendTag = MAXINT ;/* XXX why count down not up? */
173
+ static char * progname = (char * )NULL ;
174
+ static char * * real_argv ;
175
+ static int real_argc ;
176
+
177
+ static time_t tnow ;
176
178
177
179
/*
178
180
* Default Values
@@ -1208,6 +1210,9 @@ pmdie(SIGNAL_ARGS)
1208
1210
if (Shutdown >=SmartShutdown )
1209
1211
return ;
1210
1212
Shutdown = SmartShutdown ;
1213
+ tnow = time (NULL );
1214
+ fprintf (stderr ,"Smart Shutdown request at %s" ,ctime (& tnow ));
1215
+ fflush (stderr );
1211
1216
if (DLGetHead (BackendList ))/* let reaper() handle this */
1212
1217
return ;
1213
1218
/*
@@ -1230,11 +1235,18 @@ pmdie(SIGNAL_ARGS)
1230
1235
*/
1231
1236
if (Shutdown >=FastShutdown )
1232
1237
return ;
1238
+ tnow = time (NULL );
1239
+ fprintf (stderr ,"Fast Shutdown request at %s" ,ctime (& tnow ));
1240
+ fflush (stderr );
1233
1241
if (DLGetHead (BackendList ))/* let reaper() handle this */
1234
1242
{
1235
1243
Shutdown = FastShutdown ;
1236
1244
if (!FatalError )
1245
+ {
1246
+ fprintf (stderr ,"Aborting any active transaction...\n" );
1247
+ fflush (stderr );
1237
1248
SignalChildren (SIGTERM );
1249
+ }
1238
1250
return ;
1239
1251
}
1240
1252
if (Shutdown > NoShutdown )
@@ -1261,6 +1273,9 @@ pmdie(SIGNAL_ARGS)
1261
1273
* abort all children with SIGUSR1 and exit without
1262
1274
* attempt to properly shutdown data base system.
1263
1275
*/
1276
+ tnow = time (NULL );
1277
+ fprintf (stderr ,"Immediate Shutdown request at %s" ,ctime (& tnow ));
1278
+ fflush (stderr );
1264
1279
if (ShutdownPID > 0 )
1265
1280
kill (ShutdownPID ,SIGQUIT );
1266
1281
else if (StartupPID > 0 )
@@ -1308,15 +1323,23 @@ reaper(SIGNAL_ARGS)
1308
1323
if (pid != ShutdownPID )
1309
1324
abort ();
1310
1325
if (exitstatus != 0 )
1311
- abort ();
1326
+ {
1327
+ fprintf (stderr ,"Shutdown failed - abort\n" );
1328
+ fflush (stderr );
1329
+ proc_exit (1 );
1330
+ }
1312
1331
proc_exit (0 );
1313
1332
}
1314
1333
if (StartupPID > 0 )
1315
1334
{
1316
1335
if (pid != StartupPID )
1317
1336
abort ();
1318
1337
if (exitstatus != 0 )
1319
- abort ();
1338
+ {
1339
+ fprintf (stderr ,"Startup failed - abort\n" );
1340
+ fflush (stderr );
1341
+ proc_exit (1 );
1342
+ }
1320
1343
StartupPID = 0 ;
1321
1344
FatalError = false;
1322
1345
if (Shutdown > NoShutdown )
@@ -1341,9 +1364,11 @@ reaper(SIGNAL_ARGS)
1341
1364
return ;
1342
1365
if (StartupPID > 0 || ShutdownPID > 0 )
1343
1366
return ;
1344
- if (DebugLvl )
1345
- fprintf (stderr ,"%s: CleanupProc: reinitializing shared memory and semaphores\n" ,
1346
- progname );
1367
+ tnow = time (NULL );
1368
+ fprintf (stderr ,"Server processes were terminated at %s"
1369
+ "Reinitializing shared memory and semaphores\n" ,
1370
+ ctime (& tnow ));
1371
+ fflush (stderr );
1347
1372
shmem_exit (0 );
1348
1373
reset_shared (PostPortName );
1349
1374
StartupPID = StartupDataBase ();
@@ -1410,6 +1435,14 @@ CleanupProc(int pid,
1410
1435
return ;
1411
1436
}
1412
1437
1438
+ if (!FatalError )
1439
+ {
1440
+ tnow = time (NULL );
1441
+ fprintf (stderr ,"Server process (pid %d) exited with status %d at %s"
1442
+ "Terminating any active server processes...\n" ,
1443
+ pid ,exitstatus ,ctime (& tnow ));
1444
+ fflush (stderr );
1445
+ }
1413
1446
FatalError = true;
1414
1447
curr = DLGetHead (BackendList );
1415
1448
while (curr )