RE: Found issues related with logical replication and 2PC
Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>
From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Amit Kapila' <amit.kapila16@gmail.com>, shveta malik <shveta.malik@gmail.com>
Cc: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2024-08-08T09:07:00Z
Lists: pgsql-hackers
Attachments
- v2-0001-Not-to-store-the-flush-position-of-the-PREPARE-re.patch (application/octet-stream) patch v2-0001
Dear Amit, Shveta, Thanks for discussing! I reported the issue because 1) I feared the risk of data loss and 2) simply because the coding looked incorrect. However, per discussion, I understood that it wouldn't lead to loss, and adding a global variable was unacceptable in this case. I modified the patch completely. The attached patch avoids using the LastCommitLSN as the local_lsn while applying PREPARE. get_flush_position() was not changed. Also, it contains changes that have not been discussed yet: - Set last_commit_end to InvaldXLogPtr in the PREPARE case. This causes the same result as when the stream option is not "parallel." - XactLastCommitEnd was replaced even ROLLBACK PREPARED case. Since the COMMIT PREPARED record is flushed in RecordTransactionAbortPrepared(), there is no need to ensure the WAL must be sent. Best regards, Hayato Kuroda FUJITSU LIMITED
Commits
-
Change the misleading local end_lsn for prepared transactions.
- 701cf1e3174d 18.0 landed