From c16d82ba2b01027b9cbe49dde5b23fead2448b0d Mon Sep 17 00:00:00 2001 From: maxiang Date: Wed, 31 Mar 2021 16:51:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update=20src/gausskernel/storage/access/tra?= =?UTF-8?q?nsam/extreme=5Frto/dispatcher.cpp.=20drop=20tablespace=E7=A7=BB?= =?UTF-8?q?=E5=88=B0trxn=20worker=E5=8E=BB=E5=9B=9E=E6=94=BE=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E8=AF=81=E8=AF=A5=E7=9B=AE=E5=BD=95=E4=B8=8B=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=9A=84database=E5=92=8Ctable=E9=83=BD=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=90=8E=E5=86=8D=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../access/transam/extreme_rto/dispatcher.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/access/transam/extreme_rto/dispatcher.cpp b/src/gausskernel/storage/access/transam/extreme_rto/dispatcher.cpp index a59e65d4e..6912b8272 100644 --- a/src/gausskernel/storage/access/transam/extreme_rto/dispatcher.cpp +++ b/src/gausskernel/storage/access/transam/extreme_rto/dispatcher.cpp @@ -979,7 +979,18 @@ static bool DispatchDataBaseRecord(XLogReaderState *record, List *expectedTLIs, static bool DispatchTableSpaceRecord(XLogReaderState *record, List *expectedTLIs, TimestampTz recordXTime) { bool isNeedFullSync = false; - DispatchRecordWithoutPage(record, expectedTLIs); + uint8 info = (XLogRecGetInfo(record) & (~XLR_INFO_MASK)); + if (info == XLOG_TBLSPC_DROP) { + RedoItem *item = GetRedoItemPtr(record); + ReferenceRedoItem(item); + for (uint32 i = 0; i < g_dispatcher->pageLineNum; ++i) { + ReferenceRedoItem(item); + AddPageRedoItem(g_dispatcher->pageLines[i].batchThd, item); + } + AddTxnRedoItem(g_dispatcher->trxnLine.managerThd, item); + } else { + DispatchRecordWithoutPage(record, expectedTLIs); + } g_dispatcher->needImmediateCheckpoint = true; return isNeedFullSync; } From 6c0239994cb80c784aa923a0adf8af0f8eb96626 Mon Sep 17 00:00:00 2001 From: maxiang Date: Wed, 31 Mar 2021 16:53:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update=20src/gausskernel/storage/access/tra?= =?UTF-8?q?nsam/extreme=5Frto/page=5Fredo.cpp.=20drop=20tablespace?= =?UTF-8?q?=E7=A7=BB=E5=88=B0trxn=20worker=E5=8E=BB=E5=9B=9E=E6=94=BE?= =?UTF-8?q?=EF=BC=8C=E4=BF=9D=E8=AF=81=E8=AF=A5=E7=9B=AE=E5=BD=95=E4=B8=8B?= =?UTF-8?q?=E6=89=80=E6=9C=89=E7=9A=84database=E5=92=8Ctable=E9=83=BD?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8E=E5=86=8D=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/access/transam/extreme_rto/page_redo.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gausskernel/storage/access/transam/extreme_rto/page_redo.cpp b/src/gausskernel/storage/access/transam/extreme_rto/page_redo.cpp index 4f7423fa9..61d9dbef7 100644 --- a/src/gausskernel/storage/access/transam/extreme_rto/page_redo.cpp +++ b/src/gausskernel/storage/access/transam/extreme_rto/page_redo.cpp @@ -809,6 +809,9 @@ bool PageManagerRedoDistributeItems(void **eleArry, uint32 eleNum) RedoPageManagerDoDropAction(preState, hashMap); break; case BLOCK_DATA_DROP_TBLSPC_TYPE: + /* just make sure any other ddl before drop tblspc is done */ + XLogBlockParseStateRelease(preState); + break; case BLOCK_DATA_CREATE_DATABASE_TYPE: case BLOCK_DATA_CREATE_TBLSPC_TYPE: RedoPageManagerDistributeBlockRecord(hashMap, NULL);