mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
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:
parent
5a0a424edb
commit
8960fc7232
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user