Skip to content

Commit e91251f

Browse files
author
lamai93
committed
Try harder to remove server from cluster.
1 parent edf5d2f commit e91251f

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

pkg/deployment/reconcile/action_remove_member.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,22 @@ func (a *actionRemoveMember) Start(ctx context.Context) (bool, error) {
7070
if err := arangod.RemoveServerFromCluster(ctx, client.Connection(), driver.ServerID(m.ID)); err != nil {
7171
if !driver.IsNotFound(err) && !driver.IsPreconditionFailed(err) {
7272
return false, maskAny(errors.Wrapf(err, "Failed to remove server from cluster: %#v", err))
73+
} else if driver.IsPreconditionFailed(err) {
74+
cluster, err := client.Cluster(ctx)
75+
if err != nil {
76+
return false, maskAny(errors.Wrapf(err, "Failed to obtain cluster: %#v", err))
77+
}
78+
health, err := cluster.Health(ctx)
79+
if err != nil {
80+
return false, maskAny(errors.Wrapf(err, "Failed to obtain cluster health: %#v", err))
81+
}
82+
// We don't care if not found
83+
if record, ok := health.Health[driver.ServerID(m.ID)]; ok {
84+
if record.Status != driver.ServerStatusFailed {
85+
return false, maskAny(fmt.Errorf("can not remove server from cluster. Not yet terminated. Retry later"))
86+
}
87+
a.log.Warn().Msg("dbserver is failed but still in use")
88+
}
7389
} else {
7490
a.log.Warn().Msgf("ignoring error: %s", err.Error())
7591
}

0 commit comments

Comments
 (0)