diff options
author | Amit Kapila <akapila@postgresql.org> | 2021-09-07 08:07:11 +0530 |
---|---|---|
committer | Amit Kapila <akapila@postgresql.org> | 2021-09-07 08:07:11 +0530 |
commit | 4c3478859b7359912d7e99fea702c56b1f53000c (patch) | |
tree | 50f6906f3c4d30b5addf40e68aa12471ccdf31fb /src | |
parent | bd5846e4a9c1338ded5efcef53511f0d71f53f0e (diff) | |
download | postgresql-4c3478859b7359912d7e99fea702c56b1f53000c.tar.gz postgresql-4c3478859b7359912d7e99fea702c56b1f53000c.zip |
Log new catalog xmin candidate in LogicalIncreaseXminForSlot().
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/replication/logical/logical.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c index 64b8280c135..aae0ae5b8aa 100644 --- a/src/backend/replication/logical/logical.c +++ b/src/backend/replication/logical/logical.c @@ -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); |