diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 4eed6a64b665c21948d3b9d18f73843e4ce93132..ae5272286a2d4c4a9455eac79675688649d18531 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -42,7 +42,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/multixact.c,v 1.19 2006/07/13 16:49:13 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/multixact.c,v 1.20 2006/07/20 00:46:42 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1493,9 +1493,14 @@ CheckPointMultiXact(void) /* * Truncate the SLRU files. This could be done at any time, but - * checkpoint seems a reasonable place for it. + * checkpoint seems a reasonable place for it. There is one exception: + * if we are called during xlog recovery, then shared->latest_page_number + * isn't valid (because StartupMultiXact hasn't been called yet) and + * so SimpleLruTruncate would get confused. It seems best not to risk + * removing any data during recovery anyway, so don't truncate. */ - TruncateMultiXact(); + if (!InRecovery) + TruncateMultiXact(); } /*