Hi,

The commit 887227a1c changed the defaults for subscriptions to do async
commit. But since the tests often wait for disk flush and there is no
concurrent activity this has increased the amount of time needed for
each test. So the attached patch changes the subscriptions create in tab
tests to use sync commit which improves performance there (because we
also replicate only very few transactions in the tests).

-- 
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services
From a4cebdf95d1f8a58d12f2f3824dffaae1dbf435d Mon Sep 17 00:00:00 2001
From: Petr Jelinek <pjmo...@pjmodos.net>
Date: Wed, 19 Apr 2017 03:55:17 +0200
Subject: [PATCH] Change logical replication TAP tests to use sync commit

This speeds up the test run since we are often waiting on flush to disk.
---
 src/test/subscription/t/001_rep_changes.pl | 2 +-
 src/test/subscription/t/002_types.pl       | 2 +-
 src/test/subscription/t/003_constraints.pl | 2 +-
 src/test/subscription/t/004_sync.pl        | 8 ++++----
 src/test/subscription/t/005_encoding.pl    | 2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/test/subscription/t/001_rep_changes.pl 
b/src/test/subscription/t/001_rep_changes.pl
index d1817f5..8f791f1 100644
--- a/src/test/subscription/t/001_rep_changes.pl
+++ b/src/test/subscription/t/001_rep_changes.pl
@@ -48,7 +48,7 @@ $node_publisher->safe_psql('postgres',
 
 my $appname = 'tap_sub';
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub, tap_pub_ins_only");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub, tap_pub_ins_only WITH 
(synchronous_commit = local)");
 
 # Wait for subscriber to finish initialization
 my $caughtup_query =
diff --git a/src/test/subscription/t/002_types.pl 
b/src/test/subscription/t/002_types.pl
index ad15e85..2f89fdc 100644
--- a/src/test/subscription/t/002_types.pl
+++ b/src/test/subscription/t/002_types.pl
@@ -103,7 +103,7 @@ $node_publisher->safe_psql('postgres',
 
 my $appname = 'tap_sub';
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (SLOT NAME = 
tap_sub_slot)");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (SLOT NAME = tap_sub_slot, 
synchronous_commit = local)");
 
 # Wait for subscriber to finish initialization
 my $caughtup_query =
diff --git a/src/test/subscription/t/003_constraints.pl 
b/src/test/subscription/t/003_constraints.pl
index 11b8254..2b43263 100644
--- a/src/test/subscription/t/003_constraints.pl
+++ b/src/test/subscription/t/003_constraints.pl
@@ -34,7 +34,7 @@ $node_publisher->safe_psql('postgres',
 
 my $appname = 'tap_sub';
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (NOCOPY DATA)");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (NOCOPY DATA, 
synchronous_commit = local)");
 
 # Wait for subscriber to finish initialization
 my $caughtup_query =
diff --git a/src/test/subscription/t/004_sync.pl 
b/src/test/subscription/t/004_sync.pl
index 87541a0..57c9e4c 100644
--- a/src/test/subscription/t/004_sync.pl
+++ b/src/test/subscription/t/004_sync.pl
@@ -32,7 +32,7 @@ $node_publisher->safe_psql('postgres',
 
 my $appname = 'tap_sub';
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (synchronous_commit = 
local)");
 
 # Wait for subscriber to finish initialization
 my $caughtup_query =
@@ -58,7 +58,7 @@ $node_publisher->safe_psql('postgres',
 
 # recreate the subscription, it will try to do initial copy
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (synchronous_commit = 
local)");
 
 # but it will be stuck on data copy as it will fail on constraint
 my $started_query =
@@ -81,7 +81,7 @@ is($result, qq(20), 'initial data synced for second sub');
 
 # now check another subscription for the same node pair
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub2 CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (NOCOPY DATA)");
+       "CREATE SUBSCRIPTION tap_sub2 CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (NOCOPY DATA, 
synchronous_commit = local)");
 
 # wait for it to start
 $node_subscriber->poll_query_until('postgres', "SELECT pid IS NOT NULL FROM 
pg_stat_subscription WHERE subname = 'tap_sub2' AND relid IS NULL")
@@ -102,7 +102,7 @@ $node_subscriber->safe_psql('postgres',
 
 # recreate the subscription again
 $node_subscriber->safe_psql('postgres',
-       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub");
+       "CREATE SUBSCRIPTION tap_sub CONNECTION '$publisher_connstr 
application_name=$appname' PUBLICATION tap_pub WITH (synchronous_commit = 
local)");
 
 # and wait for data sync to finish again
 $node_subscriber->poll_query_until('postgres', $synced_query)
diff --git a/src/test/subscription/t/005_encoding.pl 
b/src/test/subscription/t/005_encoding.pl
index 42a4eee..da39e1e 100644
--- a/src/test/subscription/t/005_encoding.pl
+++ b/src/test/subscription/t/005_encoding.pl
@@ -30,7 +30,7 @@ my $publisher_connstr = $node_publisher->connstr . ' 
dbname=postgres';
 my $appname = 'encoding_test';
 
 $node_publisher->safe_psql('postgres', "CREATE PUBLICATION mypub FOR ALL 
TABLES;");
-$node_subscriber->safe_psql('postgres', "CREATE SUBSCRIPTION mysub CONNECTION 
'$publisher_connstr application_name=$appname' PUBLICATION mypub;");
+$node_subscriber->safe_psql('postgres', "CREATE SUBSCRIPTION mysub CONNECTION 
'$publisher_connstr application_name=$appname' PUBLICATION mypub WITH 
(synchronous_commit = local);");
 
 wait_for_caught_up($node_publisher, $appname);
 
-- 
2.7.4

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to