Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix issues in pg_rewind with --no-ensure-shutdown/--write-recovery-conf
authorMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 07:18:29 +0000 (16:18 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 4 Oct 2019 07:18:29 +0000 (16:18 +0900)
This fixes two issues with recent features added in pg_rewind:
- --dry-run should do nothing on the target directory, but 927474c
forgot to consider that for --write-recovery-conf.
- --no-ensure-shutdown was not actually working.  There is no test
coverage for this option yet, but a subsequent patch will add that.

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

src/bin/pg_rewind/pg_rewind.c

index 2eb18a92c62ffa85572119d9fea9eb032c256646..fe1468b771aa71b5e8811234d089334154a8849f 100644 (file)
@@ -101,7 +101,7 @@ main(int argc, char **argv)
        {"write-recovery-conf", no_argument, NULL, 'R'},
        {"source-pgdata", required_argument, NULL, 1},
        {"source-server", required_argument, NULL, 2},
-       {"no-ensure-shutdown", no_argument, NULL, 44},
+       {"no-ensure-shutdown", no_argument, NULL, 4},
        {"version", no_argument, NULL, 'V'},
        {"dry-run", no_argument, NULL, 'n'},
        {"no-sync", no_argument, NULL, 'N'},
@@ -180,9 +180,11 @@ main(int argc, char **argv)
            case 1:             /* --source-pgdata */
                datadir_source = pg_strdup(optarg);
                break;
+
            case 2:             /* --source-server */
                connstr_source = pg_strdup(optarg);
                break;
+
            case 4:
                no_ensure_shutdown = true;
                break;
@@ -341,7 +343,7 @@ main(int argc, char **argv)
    if (!rewind_needed)
    {
        pg_log_info("no rewind required");
-       if (writerecoveryconf)
+       if (writerecoveryconf && !dry_run)
            WriteRecoveryConfig(conn, datadir_target,
                                GenerateRecoveryConfig(conn, NULL));
        exit(0);
@@ -442,7 +444,7 @@ main(int argc, char **argv)
        pg_log_info("syncing target data directory");
    syncTargetDirectory();
 
-   if (writerecoveryconf)
+   if (writerecoveryconf && !dry_run)
        WriteRecoveryConfig(conn, datadir_target,
                            GenerateRecoveryConfig(conn, NULL));