diff --git a/src/gausskernel/storage/access/transam/parallel_recovery/dispatcher.cpp b/src/gausskernel/storage/access/transam/parallel_recovery/dispatcher.cpp index 2639ec997fa1003074cdaa911c309224924f08f1..ccecff91ccfa4ecd47825f20d8be84f1278405cc 100755 --- a/src/gausskernel/storage/access/transam/parallel_recovery/dispatcher.cpp +++ b/src/gausskernel/storage/access/transam/parallel_recovery/dispatcher.cpp @@ -648,8 +648,12 @@ void DispatchRedoRecordToFile(XLogReaderState *record, List *expectedTLIs, Times g_instance.attr.attr_storage.parallel_recovery_batch : 1; if (isNeedFullSync) ProcessPendingRecords(true); - else if (++g_dispatcher->pendingCount >= dispatch_batch || timeoutForDispatch()) + else if (++g_dispatcher->pendingCount >= dispatch_batch || timeoutForDispatch()) { ProcessPendingRecords(); + if ((g_dispatcher->dispatchEndRecPtr - g_dispatcher->dispatchFix.lastCheckLsn) > DISPATCH_FIX_SIZE) { + CheckDispatchCount(g_dispatcher->dispatchEndRecPtr); + } + } if (fatalerror == true) { /* output panic error info */ @@ -658,10 +662,6 @@ void DispatchRedoRecordToFile(XLogReaderState *record, List *expectedTLIs, Times errmsg("[REDO_LOG_TRACE]DispatchRedoRecord encounter fatal error:rmgrID:%u, info:%u, indexid:%u", rmid, (uint32)XLogRecGetInfo(record), indexid))); } - - if ((g_dispatcher->dispatchEndRecPtr - g_dispatcher->dispatchFix.lastCheckLsn) > DISPATCH_FIX_SIZE) { - CheckDispatchCount(g_dispatcher->dispatchEndRecPtr); - } } else { ereport(PANIC, (errmodule(MOD_REDO), errcode(ERRCODE_LOG), errmsg("[REDO_LOG_TRACE]DispatchRedoRecord could not be here config recovery num %d, work num %u",