From e4b0d9a4eac51f1b372a3fa0bfee92d19a8d5f95 Mon Sep 17 00:00:00 2001 From: Victor1319 Date: Tue, 17 Jun 2025 16:34:31 +0800 Subject: [PATCH] fix(data): check extent store whether closed before tiny extent recover. #1000182163 Signed-off-by: Victor1319 --- datanode/storage/extent.go | 7 ++++--- datanode/storage/extent_store.go | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/datanode/storage/extent.go b/datanode/storage/extent.go index dcf9a1460..9eaf8f118 100644 --- a/datanode/storage/extent.go +++ b/datanode/storage/extent.go @@ -856,9 +856,10 @@ func (e *Extent) TinyExtentRecover(data []byte, offset, size int64, crc uint32, watermark = watermark + (util.PageSize - watermark%util.PageSize) } e.dataSize = watermark - log.LogDebugf("after file (%v) getRealBlockNo (%v) isEmptyPacket(%v)"+ - "offset(%v) size(%v) e.datasize(%v)", e.filePath, e.getRealBlockCnt(), isEmptyPacket, offset, size, e.dataSize) - + if log.EnableDebug() { + log.LogDebugf("after file (%v) getRealBlockNo (%v) isEmptyPacket(%v)"+ + "offset(%v) size(%v) e.datasize(%v)", e.filePath, e.getRealBlockCnt(), isEmptyPacket, offset, size, e.dataSize) + } return } diff --git a/datanode/storage/extent_store.go b/datanode/storage/extent_store.go index e03a25f95..40c348c7e 100644 --- a/datanode/storage/extent_store.go +++ b/datanode/storage/extent_store.go @@ -1635,6 +1635,14 @@ func (s *ExtentStore) TinyExtentRecover(extentID uint64, offset, size int64, dat return fmt.Errorf("extent %v not tinyExtent", extentID) } + s.stopMutex.RLock() + defer s.stopMutex.RUnlock() + if s.IsClosed() { + err = ErrStoreAlreadyClosed + log.LogErrorf("[TinyExtentRecover] store(%v) failed to tiny recover, extId %d, off %d, size %d, empyt %v", s.dataPath, extentID, offset, size, isEmptyPacket) + return + } + var ( e *Extent ei *ExtentInfo