From 2bfd708dcf540ccef0d64ba086f5bd31d22bbef0 Mon Sep 17 00:00:00 2001 From: chihe Date: Fri, 1 Nov 2024 10:34:27 +0800 Subject: [PATCH] refactor(metanode): submit inode to free forbidden migration by batch close:#22701675 Signed-off-by: chihe --- .../partition_forbidden_migration_list.go | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/metanode/partition_forbidden_migration_list.go b/metanode/partition_forbidden_migration_list.go index d904c09dd..0599535da 100644 --- a/metanode/partition_forbidden_migration_list.go +++ b/metanode/partition_forbidden_migration_list.go @@ -50,23 +50,35 @@ func (mp *metaPartition) checkForbiddenMigrationWorker() { } freeInodes = append(freeInodes, inode) } - bufSlice := make([]byte, 0, 8*len(freeInodes)) - for _, inode := range freeInodes { - bufSlice = append(bufSlice, inode.MarshalKey()...) - } - log.LogDebugf("[checkForbiddenMigrationWorker] mp %v sync %v to follower", - mp.config.PartitionId, freeInodes) - err := mp.syncToRaftFollowersFreeForbiddenMigrationInode(bufSlice) - if err != nil { - log.LogWarnf("[checkForbiddenMigrationWorker] raft commit inode list: %v, "+ - "response %s", freeInodes, err.Error()) - } - for _, inode := range freeInodes { - if err == nil { - mp.freeForbiddenMigrationInode(inode) - } else { - mp.fmList.Put(inode.Inode) + + batchSize := 1024 + totalInodes := len(freeInodes) + bufSlice := make([]byte, 0, 8*batchSize) + + for i := 0; i < totalInodes; i += batchSize { + end := i + batchSize + if end > totalInodes { + end = totalInodes } + batch := freeInodes[i:end] + for _, inode := range batch { + bufSlice = append(bufSlice, inode.MarshalKey()...) + } + log.LogDebugf("[checkForbiddenMigrationWorker] mp %v sync %v to follower", + mp.config.PartitionId, len(batch)) + err := mp.syncToRaftFollowersFreeForbiddenMigrationInode(bufSlice) + if err != nil { + log.LogWarnf("[checkForbiddenMigrationWorker] raft commit inode list: %v, "+ + "response %s", len(batch), err.Error()) + } + for _, inode := range batch { + if err == nil { + mp.freeForbiddenMigrationInode(inode) + } else { + mp.fmList.Put(inode.Inode) + } + } + bufSlice = bufSlice[:0] } } }