agora inbox for [email protected]  
help / color / mirror / Atom feed
[PATCH 17/21] *an old and "deleted [has] happened"
25+ messages / 3 participants
[nested] [flat]

* [PATCH 17/21] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--jI8keyz6grp/JLjh
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* [PATCH 17/18] *an old and "deleted [has] happened"
@ 2021-02-06 21:17  Justin Pryzby <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Justin Pryzby @ 2021-02-06 21:17 UTC (permalink / raw)

Heikki missed this in 6b387179baab8d0e5da6570678eefbe61f3acc79
---
 doc/src/sgml/protocol.sgml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3763b4b995..a51f2c9920 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -6928,8 +6928,8 @@ Delete
 </term>
 <listitem>
 <para>
-                Identifies the following TupleData message as a old tuple.
-                This field is present if the table in which the delete has
+                Identifies the following TupleData message as an old tuple.
+                This field is present if the table in which the delete
                 happened has REPLICA IDENTITY set to FULL.
 </para>
 </listitem>
-- 
2.17.0


--lc9FT7cWel8HagAv
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
 filename="0018-doc-review-for-pg_stat_progress_create_index.patch"



^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* Deadlock between logrep apply worker and tablesync worker
@ 2023-01-22 19:59  Tom Lane <[email protected]>
  0 siblings, 1 reply; 25+ messages in thread

From: Tom Lane @ 2023-01-22 19:59 UTC (permalink / raw)
  To: [email protected]

On my machine, the src/test/subscription/t/002_types.pl test
usually takes right about 1.5 seconds:

$ time make check PROVE_FLAGS=--timer PROVE_TESTS=t/002_types.pl 
...
[14:22:12] t/002_types.pl .. ok     1550 ms ( 0.00 usr  0.00 sys +  0.70 cusr  0.25 csys =  0.95 CPU)
[14:22:13]

I noticed however that sometimes (at least one try in ten, for me)
it takes about 2.5 seconds:

[14:22:16] t/002_types.pl .. ok     2591 ms ( 0.00 usr  0.00 sys +  0.69 cusr  0.28 csys =  0.97 CPU)
[14:22:18]

and I've even seen 3.5 seconds.  I dug into this and eventually
identified the cause: it's a deadlock between a subscription's apply
worker and a tablesync worker that it's spawned.  Sometimes the apply
worker calls wait_for_relation_state_change (to wait for the tablesync
worker to finish) while it's holding a lock on pg_replication_origin.
If that's the case, then when the tablesync worker reaches
process_syncing_tables_for_sync it is able to perform
UpdateSubscriptionRelState and reach the transaction commit below
that; but when it tries to do replorigin_drop_by_name a little further
down, it blocks on acquiring ExclusiveLock on pg_replication_origin.
So we have an undetected deadlock.  We escape that because
wait_for_relation_state_change has a 1-second timeout, after which
it rechecks GetSubscriptionRelState and is able to see the committed
relation state change; so it continues, and eventually releases its
transaction and the lock, permitting the tablesync worker to finish.

I've not tracked down the exact circumstances in which the apply
worker ends up holding a problematic lock, but it seems likely
that it corresponds to cases where its main loop has itself called
replorigin_drop_by_name, a bit further up, for some other concurrent
tablesync operation.  (In all the cases I've traced through, the apply
worker is herding multiple tablesync workers when this happens.)

I experimented with having the apply worker release its locks
before waiting for the tablesync worker, as attached.  This passes
check-world and it seems to eliminate the test runtime instability,
but I wonder whether it's semantically correct.  This whole business
of taking table-wide ExclusiveLock on pg_replication_origin looks
like a horrid kluge that we should try to get rid of, not least
because I don't see any clear documentation of what hazard it's
trying to prevent.

Another thing that has a bad smell about it is the fact that
process_syncing_tables_for_sync uses two transactions in the first
place.  There's a comment there claiming that it's for crash safety,
but I can't help suspecting it's really because this case becomes a
hard deadlock without that mid-function commit.

It's not great in any case that the apply worker can move on in
the belief that the tablesync worker is done when in fact the latter
still has catalog state updates to make.  And I wonder what we're
doing with having both of them calling replorigin_drop_by_name
... shouldn't that responsibility belong to just one of them?

So I think this whole area deserves a hard look, and I'm not at
all sure that what's attached is a good solution.

			regards, tom lane



Attachments:

  [text/x-diff] hack-to-prevent-logrep-worker-deadlocks.patch (1.2K, ../../[email protected]/2-hack-to-prevent-logrep-worker-deadlocks.patch)
  download | inline diff:
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c
index 4647837b82..bb45c2107f 100644
--- a/src/backend/replication/logical/tablesync.c
+++ b/src/backend/replication/logical/tablesync.c
@@ -539,15 +539,27 @@ process_syncing_tables_for_apply(XLogRecPtr current_lsn)
 					LWLockRelease(LogicalRepWorkerLock);
 
 					/*
-					 * Enter busy loop and wait for synchronization worker to
-					 * reach expected state (or die trying).
+					 * If we have a transaction, we must commit it to release
+					 * any locks we have (it's quite likely we hold lock on
+					 * pg_replication_origin, which the sync worker will need
+					 * to update).  Then start a new transaction so we can
+					 * examine catalog state.
 					 */
-					if (!started_tx)
+					if (started_tx)
+					{
+						CommitTransactionCommand();
+						StartTransactionCommand();
+					}
+					else
 					{
 						StartTransactionCommand();
 						started_tx = true;
 					}
 
+					/*
+					 * Enter busy loop and wait for synchronization worker to
+					 * reach expected state (or die trying).
+					 */
 					wait_for_relation_state_change(rstate->relid,
 												   SUBREL_STATE_SYNCDONE);
 				}


^ permalink  raw  reply  [nested|flat] 25+ messages in thread

* Re: Deadlock between logrep apply worker and tablesync worker
@ 2023-01-23 06:08  Amit Kapila <[email protected]>
  parent: Tom Lane <[email protected]>
  0 siblings, 0 replies; 25+ messages in thread

From: Amit Kapila @ 2023-01-23 06:08 UTC (permalink / raw)
  To: Tom Lane <[email protected]>; +Cc: [email protected]

On Mon, Jan 23, 2023 at 1:29 AM Tom Lane <[email protected]> wrote:
>
> Another thing that has a bad smell about it is the fact that
> process_syncing_tables_for_sync uses two transactions in the first
> place.  There's a comment there claiming that it's for crash safety,
> but I can't help suspecting it's really because this case becomes a
> hard deadlock without that mid-function commit.
>
> It's not great in any case that the apply worker can move on in
> the belief that the tablesync worker is done when in fact the latter
> still has catalog state updates to make.  And I wonder what we're
> doing with having both of them calling replorigin_drop_by_name
> ... shouldn't that responsibility belong to just one of them?
>

Originally, it was being dropped at one place only (via tablesync
worker) but we found a race condition as mentioned in the comments in
process_syncing_tables_for_sync() before the start of the second
transaction which leads to this change. See the report and discussion
about that race condition in the email [1].

[1] - https://www.postgresql.org/message-id/[email protected]...

-- 
With Regards,
Amit Kapila.






^ permalink  raw  reply  [nested|flat] 25+ messages in thread


end of thread, other threads:[~2023-01-23 06:08 UTC | newest]

Thread overview: 25+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/21] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2021-02-06 21:17 [PATCH 17/18] *an old and "deleted [has] happened" Justin Pryzby <[email protected]>
2023-01-22 19:59 Deadlock between logrep apply worker and tablesync worker Tom Lane <[email protected]>
2023-01-23 06:08 ` Re: Deadlock between logrep apply worker and tablesync worker Amit Kapila <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox