pgsql: Test decoding of two-phase transactions during the build of a co

Started by Amit Kapilaover 5 years ago6 messagescomitters
Jump to latest
#1Amit Kapila
amit.kapila16@gmail.com

Test decoding of two-phase transactions during the build of a consistent snapshot.

Commit a271a1b50e added the capability to allow decoding at prepare time.
This adds an isolation testcase to test that decoding happens at commit
time when the consistent snapshot state is reached after prepare but
before commit prepared.

Author: Ajin Cherian
Reviewed-by: Amit Kapila
Discussion:
/messages/by-id/02DA5F5E-CECE-4D9C-8B4B-418077E2C010@postgrespro.ru
/messages/by-id/CAMGcDxeqEpWj3fTXwqhSwBdXd2RS9jzwWscO-XbeCfso6ts3+Q@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5a3574d7b33480de51692962e6fd25d00c05718a

Modified Files
--------------
contrib/test_decoding/Makefile | 3 +-
.../test_decoding/expected/twophase_snapshot.out | 41 +++++++++++++++++
contrib/test_decoding/specs/twophase_snapshot.spec | 53 ++++++++++++++++++++++
3 files changed, 96 insertions(+), 1 deletion(-)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Amit Kapila (#1)
Re: pgsql: Test decoding of two-phase transactions during the build of a co

Amit Kapila <akapila@postgresql.org> writes:

Test decoding of two-phase transactions during the build of a consistent snapshot.

It seems this test case isn't 100% stable:

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=chipmunk&amp;dt=2021-01-08%2023%3A56%3A57

========================== output_iso/regression.diffs ================
diff -U3 /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/expected/twophase_snapshot.out /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/output_iso/results/twophase_snapshot.out
--- /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/expected/twophase_snapshot.out	2021-01-07 02:49:30.231809843 +0200
+++ /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/output_iso/results/twophase_snapshot.out	2021-01-09 04:01:26.730510078 +0200
@@ -26,6 +26,8 @@
 data           

BEGIN
+COMMIT
+BEGIN
table public.do_write: INSERT: id[integer]:2
COMMIT
step s2cp: COMMIT PREPARED 'test1';
@@ -33,6 +35,10 @@
data

 BEGIN          
+COMMIT         
+BEGIN          
+COMMIT         
+BEGIN          
 table public.do_write: INSERT: id[integer]:1
 PREPARE TRANSACTION 'test1'
 COMMIT PREPARED 'test1'

I think we've seen this extra-transactions symptom before,
but I don't recall the details at this late hour.

regards, tom lane

#3Amit Kapila
amit.kapila16@gmail.com
In reply to: Tom Lane (#2)
Re: pgsql: Test decoding of two-phase transactions during the build of a co

On Sat, Jan 9, 2021 at 11:17 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Amit Kapila <akapila@postgresql.org> writes:

Test decoding of two-phase transactions during the build of a consistent snapshot.

It seems this test case isn't 100% stable:

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=chipmunk&amp;dt=2021-01-08%2023%3A56%3A57

========================== output_iso/regression.diffs ================
diff -U3 /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/expected/twophase_snapshot.out /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/output_iso/results/twophase_snapshot.out
--- /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/expected/twophase_snapshot.out       2021-01-07 02:49:30.231809843 +0200
+++ /home/pgbfarm/buildroot/HEAD/pgsql.build/contrib/test_decoding/output_iso/results/twophase_snapshot.out     2021-01-09 04:01:26.730510078 +0200
@@ -26,6 +26,8 @@
data

BEGIN
+COMMIT
+BEGIN
table public.do_write: INSERT: id[integer]:2
COMMIT
step s2cp: COMMIT PREPARED 'test1';
@@ -33,6 +35,10 @@
data

BEGIN
+COMMIT
+BEGIN
+COMMIT
+BEGIN
table public.do_write: INSERT: id[integer]:1
PREPARE TRANSACTION 'test1'
COMMIT PREPARED 'test1'

I think we've seen this extra-transactions symptom before,
but I don't recall the details at this late hour.

I'll look into it.

--
With Regards,
Amit Kapila.

#4Amit Kapila
amit.kapila16@gmail.com
In reply to: Amit Kapila (#3)
Re: pgsql: Test decoding of two-phase transactions during the build of a co

On Sat, Jan 9, 2021 at 12:18 PM Amit Kapila <amit.kapila16@gmail.com> wrote:

On Sat, Jan 9, 2021 at 11:17 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:

I think we've seen this extra-transactions symptom before,
but I don't recall the details at this late hour.

I'll look into it.

I think I know whats going on here. I have responded to the thread on
pgsql-hackers [1]/messages/by-id/CAA4eK1J5onGc-sHLj3moS247rJK6KpvM_wAfiOHs6YFnHHs3+w@mail.gmail.com.

[1]: /messages/by-id/CAA4eK1J5onGc-sHLj3moS247rJK6KpvM_wAfiOHs6YFnHHs3+w@mail.gmail.com

--
With Regards,
Amit Kapila.

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Amit Kapila (#4)
Re: pgsql: Test decoding of two-phase transactions during the build of a co

Amit Kapila <amit.kapila16@gmail.com> writes:

I think I know whats going on here. I have responded to the thread on
pgsql-hackers [1].

Ah, yeah, the autovacuum theory fits the facts: chipmunk is pretty
slow, and it's not failed 100% of the time.

regards, tom lane

#6Amit Kapila
amit.kapila16@gmail.com
In reply to: Tom Lane (#5)
Re: pgsql: Test decoding of two-phase transactions during the build of a co

On Sat, Jan 9, 2021 at 1:09 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Amit Kapila <amit.kapila16@gmail.com> writes:

I think I know whats going on here. I have responded to the thread on
pgsql-hackers [1].

Ah, yeah, the autovacuum theory fits the facts: chipmunk is pretty
slow, and it's not failed 100% of the time.

I have pushed the fix. It is difficult to reproduce the exact case but
I have reproduced it with a parallel empty xact and pushed the fix.

--
With Regards,
Amit Kapila.