Log new catalog xmin candidate in LogicalIncreaseXminForSlot().
authorAmit Kapila <[email protected]>
Tue, 7 Sep 2021 02:37:11 +0000 (08:07 +0530)
committerAmit Kapila <[email protected]>
Tue, 7 Sep 2021 02:37:11 +0000 (08:07 +0530)
Similar to LogicalIncreaseRestartDecodingForSlot() add a debug message to
LogicalIncreaseXminForSlot() reporting a new catalog_xmin candidate.

This just adds additional diagnostic information during logical decoding that
can aid debugging.

Author: Ashutosh Bapat
Reviewed-by: Masahiko Sawada, Amit Kapila
Discussion: https://postgr.es/m/CAExHW5usQWbiUz0hHOCu5twS1O9DvpcPojf6sor=8q--VUuMbA@mail.gmail.com

src/backend/replication/logical/logical.c

index 64b8280c13562c28786026c267ec7715cfb8759f..aae0ae5b8aaba01d4fdc37edc87381d7eb194dfc 100644 (file)
@@ -1565,6 +1565,7 @@ LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
 {
        bool            updated_xmin = false;
        ReplicationSlot *slot;
+       bool            got_new_xmin = false;
 
        slot = MyReplicationSlot;
 
@@ -1602,9 +1603,19 @@ LogicalIncreaseXminForSlot(XLogRecPtr current_lsn, TransactionId xmin)
        {
                slot->candidate_catalog_xmin = xmin;
                slot->candidate_xmin_lsn = current_lsn;
+
+               /*
+                * Log new xmin at an appropriate log level after releasing the
+                * spinlock.
+                */
+               got_new_xmin = true;
        }
        SpinLockRelease(&slot->mutex);
 
+       if (got_new_xmin)
+               elog(DEBUG1, "got new catalog xmin %u at %X/%X", xmin,
+                        LSN_FORMAT_ARGS(current_lsn));
+
        /* candidate already valid with the current flush position, apply */
        if (updated_xmin)
                LogicalConfirmReceivedLocation(slot->data.confirmed_flush);