OSDN Git Service

Now that streaming replication switches between streaming mode and
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 10 Feb 2010 08:25:25 +0000 (08:25 +0000)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 10 Feb 2010 08:25:25 +0000 (08:25 +0000)
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

index 4b42937..ac0f686 100644 (file)
@@ -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