From 161d9d51b321f021d4231001ccc32988edfccda0 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Wed, 10 Feb 2010 08:25:25 +0000 Subject: [PATCH] Now that streaming replication switches between streaming mode and restoring from archive, the last WAL segment is not necessarily open at the end of recovery. Fix assertion that assumed that. Fujii Masao, fixing the assertion failure reported by Martin Pihlak. --- src/backend/access/transam/xlog.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 4b429378de..ac0f6861d0 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.369 2010/02/08 09:08:51 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.370 2010/02/10 08:25:25 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -5085,16 +5085,14 @@ exitArchiveRecovery(TimeLineID endTLI, uint32 endLogId, uint32 endLogSeg) UpdateMinRecoveryPoint(InvalidXLogRecPtr, true); /* - * We should have the ending log segment currently open. Verify, and then - * close it (to avoid problems on Windows with trying to rename or delete - * an open file). + * If the ending log segment is still open, close it (to avoid + * problems on Windows with trying to rename or delete an open file). */ - Assert(readFile >= 0); - Assert(readId == endLogId); - Assert(readSeg == endLogSeg); - - close(readFile); - readFile = -1; + if (readFile >= 0) + { + close(readFile); + readFile = -1; + } /* * If the segment was fetched from archival storage, we want to replace