Fix --dry-run mode of pg_rewind
authorMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 00:16:03 +0000 (09:16 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 00:16:03 +0000 (09:16 +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 d378053de450ce6693f5bb6e38a24c3a908a43a2..f9d94764ad62f42d3791ffee18b5040126230d51 100644 (file)
@@ -388,7 +388,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");