pg_rewind: Don't error if the two clusters are already on the same timeline

This previously resulted in an error and a nonzero exit status, but
after discussion this should rather be a noop with a zero exit status.
This commit is contained in:
Peter Eisentraut 2015-12-03 22:21:16 -05:00
parent 8c1615531f
commit 6b34e55638
2 changed files with 46 additions and 27 deletions

View File

@ -216,8 +216,12 @@ main(int argc, char **argv)
* do.
*/
if (ControlFile_target.checkPointCopy.ThisTimeLineID == ControlFile_source.checkPointCopy.ThisTimeLineID)
pg_fatal("source and target cluster are on the same timeline\n");
{
printf(_("source and target cluster are on the same timeline\n"));
rewind_needed = false;
}
else
{
findCommonAncestorTimeline(&divergerec, &lastcommontliIndex);
printf(_("servers diverged at WAL position %X/%X on timeline %u\n"),
(uint32) (divergerec >> 32), (uint32) divergerec,
@ -252,6 +256,7 @@ main(int argc, char **argv)
else
rewind_needed = true;
}
}
if (!rewind_needed)
{

View File

@ -0,0 +1,14 @@
use strict;
use warnings;
use TestLib;
use Test::More tests => 1;
use RewindTest;
# Test that running pg_rewind if the two clusters are on the same
# timeline runs successfully.
RewindTest::setup_cluster();
RewindTest::start_master();
RewindTest::create_standby();
RewindTest::run_pg_rewind('local');