aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/xlog.c6
-rw-r--r--src/test/recovery/t/009_twophase.pl4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 6438016d421..885a12a1148 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7899,7 +7899,11 @@ StartupXLOG(void)
TrimCLOG();
TrimMultiXact();
- /* Reload shared-memory state for prepared transactions */
+ /*
+ * Reload shared-memory state for prepared transactions. This needs to
+ * happen before renaming the last partial segment of the old timeline as
+ * it may be possible that we have to recovery some transactions from it.
+ */
RecoverPreparedTransactions();
/* Shut down xlogreader */
diff --git a/src/test/recovery/t/009_twophase.pl b/src/test/recovery/t/009_twophase.pl
index 4a79c5ebfdb..2b46a4d1a48 100644
--- a/src/test/recovery/t/009_twophase.pl
+++ b/src/test/recovery/t/009_twophase.pl
@@ -29,7 +29,9 @@ sub configure_and_reload
# Setup london node
my $node_london = get_new_node("london");
-$node_london->init(allows_streaming => 1);
+# Archiving is used to provide coverage with the creation of .partial segments
+# done at the end of recovery and the recovery of two-phase transactions.
+$node_london->init(allows_streaming => 1, has_archiving => 1);
$node_london->append_conf(
'postgresql.conf', qq(
max_prepared_transactions = 10