diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 99f702cb80..60531277dc 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -6446,6 +6446,16 @@ StartupXLOG(void) */ ShutdownWalRcv(); + /* + * Reset unlogged relations to the contents of their INIT fork. This is + * done AFTER recovery is complete so as to include any unlogged relations + * created during recovery, but BEFORE recovery is marked as having + * completed successfully. Otherwise we'd not retry if any of the post + * end-of-recovery steps fail. + */ + if (InRecovery) + ResetUnloggedRelations(UNLOGGED_RELATION_INIT); + /* * We don't need the latch anymore. It's not strictly necessary to disown * it, but let's do it for the sake of tidiness. @@ -6713,14 +6723,6 @@ StartupXLOG(void) */ PreallocXlogFiles(EndOfLog); - /* - * Reset initial contents of unlogged relations. This has to be done - * AFTER recovery is complete so that any unlogged relations created - * during recovery also get picked up. - */ - if (InRecovery) - ResetUnloggedRelations(UNLOGGED_RELATION_INIT); - /* * Okay, we're officially UP. */