From af29fcb32c3b9a7b6f19aed926e619183ff1f51c Mon Sep 17 00:00:00 2001 From: cchen676 Date: Tue, 13 Jul 2021 11:55:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=20issue=20=E6=81=A2=E5=A4=8Dpg=5Fdw=5Fsingl?= =?UTF-8?q?e=E6=96=87=E4=BB=B6=E6=97=B6=E8=B7=B3=E8=BF=87=E4=BA=86?= =?UTF-8?q?=E5=AF=B9=E7=B4=A2=E5=BC=95=E4=B8=BA0=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E9=A1=B5=E9=9D=A2=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/access/transam/double_write.cpp | 12 +++++++++++- src/gausskernel/storage/replication/walsender.cpp | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/storage/access/transam/double_write.cpp b/src/gausskernel/storage/access/transam/double_write.cpp index 9a55ef81..c18c0234 100644 --- a/src/gausskernel/storage/access/transam/double_write.cpp +++ b/src/gausskernel/storage/access/transam/double_write.cpp @@ -1803,9 +1803,19 @@ bool dw_single_file_recycle(bool trunc_file) bool dw_verify_item(const dw_single_flush_item* item, uint16 dwn) { - if (item->data_page_idx == 0 || item->dwn != dwn) { + if (item->dwn != dwn) { return false; } + + if (item->buf_tag.forkNum == InvalidForkNumber || item->buf_tag.blockNum == InvalidBlockNumber || + item->buf_tag.rnode.relNode == InvalidOid) { + ereport(DEBUG1, + (errmsg("dw recovery, find invalid item [page_idx %hu dwn %hu] skip this item," + "buf_tag[rel %u/%u/%u blk %u fork %d]", item->data_page_idx, item->dwn, + item->buf_tag.rnode.spcNode, item->buf_tag.rnode.dbNode, item->buf_tag.rnode.relNode, + item->buf_tag.blockNum, item->buf_tag.forkNum))); + return false; + } pg_crc32c crc; /* Contents are protected with a CRC */ INIT_CRC32C(crc); diff --git a/src/gausskernel/storage/replication/walsender.cpp b/src/gausskernel/storage/replication/walsender.cpp index 76662c33..e0f23629 100644 --- a/src/gausskernel/storage/replication/walsender.cpp +++ b/src/gausskernel/storage/replication/walsender.cpp @@ -1795,7 +1795,7 @@ bool cmdStringCheck(const char *cmd_string) * */ static bool cmdStringLengthCheck(const char* cmd_string) { - const size_t cmd_length_limit = 1024; + const size_t cmd_length_limit = 102400; const size_t slotname_limit = 64; char comd[cmd_length_limit] = {'\0'}; char* sub_cmd = NULL;