refactor(data): modify punch hole sync size to 128M for tiny extent. #1000212704

Signed-off-by: Victor1319 <zengxuewei@oppo.com>
This commit is contained in:
Victor1319 2025-07-03 19:07:42 +08:00 committed by zhumingze1108
parent 640613aa7e
commit ddde96c5f6
3 changed files with 13 additions and 3 deletions

View File

@ -745,7 +745,7 @@ func (dp *DataPartition) doStreamExtentFixRepair(wg *sync.WaitGroup, remoteExten
RETRY:
err := dp.streamRepairExtent(remoteExtentInfo, repl.NewTinyExtentRepairReadPacket, repl.NewExtentRepairReadPacket, repl.NewNormalExtentWithHoleRepairReadPacket, repl.NewPacketEx)
if err != nil {
if strings.Contains(err.Error(), storage.NoDiskReadRepairExtentTokenError.Error()) || strings.Contains(err.Error(), tinyOffsetInvalid) {
if strings.Contains(err.Error(), storage.NoDiskReadRepairExtentTokenError.Error()) || strings.Contains(err.Error(), tinyOffsetInvalid) || strings.Contains(err.Error(), "timeout") {
log.LogWarnf("action[DoRepair] retry dp(%v) extent(%v). err %s ", dp.partitionID, remoteExtentInfo.FileID, err.Error())
goto RETRY
}

View File

@ -874,8 +874,8 @@ func (e *Extent) getExtentWithHoleAvailableOffset(offset int64) (newOffset, newE
if err != nil {
return
}
if newOffset-offset > util.BlockSize {
newOffset = offset + util.BlockSize
if newOffset-offset > util.ExtentSize {
newOffset = offset + util.ExtentSize
}
if newEnd-newOffset > util.BlockSize {
newEnd = newOffset + util.BlockSize

View File

@ -19,6 +19,7 @@ import (
"encoding/json"
"fmt"
"os"
"strings"
"syscall"
"testing"
@ -206,6 +207,15 @@ func tinyExtentRepairTest(t *testing.T, name string) {
for _, v := range data {
require.EqualValues(t, v, 0)
}
size = e.Size()
size1 := util.ExtentSize
err = e.TinyExtentRecover(nil, size, int64(size1), 0, true)
require.NoError(t, err)
_, err = e.GetFile().Seek(size, storage.SEEK_DATA)
require.True(t, strings.Contains(err.Error(), syscall.ENXIO.Error()))
require.True(t, e.Size() == int64(size1)+size)
size = e.Size()
data = []byte(dataStr)
err = e.TinyExtentRecover(data, size, int64(len(data)), 0, false)