!886 drop tablespace移到trxn worker去回放,保证该目录下所有的database和table都删除后再处理

Merge pull request !886 from maxiang/tablespace
This commit is contained in:
opengauss-bot
2021-03-31 20:00:47 +08:00
committed by Gitee
2 changed files with 15 additions and 1 deletions

View File

@ -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;
}

View File

@ -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);