feat(shardnode): no need to wait apply member change when delete shards of broken disk

with #1000176986

Signed-off-by: xiejian <xiejian3@oppo.com>
This commit is contained in:
xiejian 2025-10-10 17:29:19 +08:00 committed by slasher
parent 5a0a424edb
commit 8960fc7232
2 changed files with 6 additions and 4 deletions

View File

@ -354,7 +354,7 @@ func (m *manager) CreateRaftGroup(ctx context.Context, cfg *GroupConfig) (Group,
func (m *manager) GetRaftGroup(id uint64) (Group, error) {
v, ok := m.groups.Load(id)
if !ok {
return nil, errors.New("group not found")
return nil, ErrGroupNotFound
}
return v.(Group), nil
}

View File

@ -771,12 +771,14 @@ func (s *shard) DeleteShard(ctx context.Context, nodeHost string, clearData bool
if err != nil {
return err
}
// wait current shard apply member change done
// 1. shard raft group not removed, should wait current shard apply member change done
// 2. shard raft group has been removed(handle eio), can't apply any change, no need to wait
_, getGroupErr := s.disk.raftManager.GetRaftGroup(uint64(s.suid.ShardID()))
for {
if !s.isShardUnitExist(s.suid) {
time.Sleep(1 * time.Second)
if !s.isShardUnitExist(s.suid) || errors.Is(getGroupErr, raft.ErrGroupNotFound) {
break
}
time.Sleep(1 * time.Second)
}
span.Warnf("disk[%d] shard[%d] suid[%d] remove from members done", s.diskID, s.suid.ShardID(), s.suid)