Fix --dry-run mode of pg_rewind
authorMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 00:14:51 +0000 (09:14 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 00:14:51 +0000 (09:14 +0900)
Even if --dry-run mode was specified, the control file was getting
updated, preventing follow-up runs of pg_rewind to work properly on the
target data folder.  The origin of the problem came from the refactoring
done by ce6afc6.

Author: Alexey Kondratov
Discussion: https://postgr.es/m/7ca88204-3e0b-2f4c-c8af-acadc4b266e5@postgrespro.ru
Backpatch-through: 12

src/bin/pg_rewind/pg_rewind.c

index a7fd9e0cabe749827b2a74caedb620d56cd26515..2eb18a92c62ffa85572119d9fea9eb032c256646 100644 (file)
@@ -435,7 +435,8 @@ main(int argc, char **argv)
    ControlFile_new.minRecoveryPoint = endrec;
    ControlFile_new.minRecoveryPointTLI = endtli;
    ControlFile_new.state = DB_IN_ARCHIVE_RECOVERY;
-   update_controlfile(datadir_target, &ControlFile_new, do_sync);
+   if (!dry_run)
+       update_controlfile(datadir_target, &ControlFile_new, do_sync);
 
    if (showprogress)
        pg_log_info("syncing target data directory");