|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.141 2005/02/26 18:43:33 tgl Exp $ |
| 11 | + * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.142 2005/03/18 05:24:13 tgl Exp $ |
12 | 12 | *
|
13 | 13 | *
|
14 | 14 | *-------------------------------------------------------------------------
|
@@ -507,13 +507,14 @@ ShutdownPostgres(int code, Datum arg)
|
507 | 507 | * since that just raises the odds of failure --- but there's some
|
508 | 508 | * stuff we need to do.
|
509 | 509 | *
|
510 |
| - * Release any LW locks and buffer context locks we might be holding. |
511 |
| - * This is a kluge to improve the odds that we won't get into a |
512 |
| - * self-made stuck-lock scenario while trying to shut down. |
| 510 | + * Release any LW locks, buffer content locks, and buffer pins we might be |
| 511 | + * holding. This is a kluge to improve the odds that we won't get into a |
| 512 | + * self-made stuck-lock scenario while trying to shut down. We *must* |
| 513 | + * release buffer pins to make it safe to do file deletion, since we |
| 514 | + * might have some pins on pages of the target files. |
513 | 515 | */
|
514 | 516 | LWLockReleaseAll();
|
515 |
| -AbortBufferIO(); |
516 |
| -UnlockBuffers(); |
| 517 | +AtProcExit_Buffers(); |
517 | 518 |
|
518 | 519 | /*
|
519 | 520 | * In case a transaction is open, delete any files it created.This
|
|