On 2020/09/04 13:53, Fujii Masao wrote:
On 2020/09/04 8:29, Anastasia Lubennikova wrote:
On 27.08.2020 16:02, Grigory Smolkin wrote:
Hello!
I`ve noticed, that when running switchover replica to master and back to
replica, new history file is streamed to replica, but not archived,
which is not great, because it breaks PITR if archiving is running on replica.
The fix looks trivial.
Bash script to reproduce the problem and patch are attached.
Thanks for the report. I agree that it looks like a bug.
+1
+ /* Mark history file as ready for archiving */
+ if (XLogArchiveMode != ARCHIVE_MODE_OFF)
+ XLogArchiveNotify(fname);
I agree that history file should be archived in the standby when
archive_mode=always. But why do we need to do when archive_mode=on?
I'm just concerned about the case where the primary and standby
have the shared archive area, and archive_mode is on.
So I updated the patch so that walreceiver marks the streamed history file
as ready for archiving only when archive_mode=always. Patch attached.
Thought?
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION
diff --git a/src/backend/replication/walreceiver.c
b/src/backend/replication/walreceiver.c
index 17f1a49f87..32693c56db 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -758,6 +758,10 @@ WalRcvFetchTimeLineHistoryFiles(TimeLineID first,
TimeLineID last)
*/
writeTimeLineHistoryFile(tli, content, len);
+ /* Mark history file as ready for archiving */
+ if (XLogArchiveMode == ARCHIVE_MODE_ALWAYS)
+ XLogArchiveNotify(fname);
+
pfree(fname);
pfree(content);
}