Skip to content

Commit 2867907

Browse files
committed
Fixed MemberStatusList.Equal
1 parent dc73620 commit 2867907

File tree

3 files changed

+30
-24
lines changed

3 files changed

+30
-24
lines changed

pkg/apis/deployment/v1alpha/member_status_list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func (l MemberStatusList) Equal(other MemberStatusList) bool {
4141
}
4242

4343
for i := 0; i < len(l); i++ {
44-
o, found := l.ElementByID(l[i].ID)
44+
o, found := other.ElementByID(l[i].ID)
4545
if !found {
4646
return false
4747
}

pkg/apis/deployment/v1alpha/member_status_list_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,17 @@ func TestMemberStatusList(t *testing.T) {
6666
assert.Equal(t, m1.ID, (*list)[0].ID)
6767
assert.Equal(t, m2.ID, (*list)[1].ID)
6868
assert.Equal(t, m3.ID, (*list)[2].ID)
69+
70+
list2 := &MemberStatusList{m3, m2, m1}
71+
assert.True(t, list.Equal(*list2))
72+
assert.True(t, list2.Equal(*list))
73+
74+
list3 := &MemberStatusList{m3, m1}
75+
assert.False(t, list.Equal(*list3))
76+
assert.False(t, list3.Equal(*list))
77+
78+
list4 := MemberStatusList{m3, m2, m1}
79+
list4[1].Phase = "something-else"
80+
assert.False(t, list.Equal(list4))
81+
assert.False(t, list4.Equal(*list))
6982
}

pkg/deployment/resources/member_cleanup.go

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import (
2929
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1alpha"
3030
"github.com/arangodb/kube-arangodb/pkg/metrics"
3131
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
32-
"github.com/rs/zerolog/log"
3332
)
3433

3534
const (
@@ -63,9 +62,6 @@ func (r *Resources) CleanupRemovedMembers() error {
6362

6463
// cleanupRemovedClusterMembers removes all arangod members that are no longer part of the cluster.
6564
func (r *Resources) cleanupRemovedClusterMembers() error {
66-
67-
log.Info().Msg("Cleanup routine 1")
68-
6965
log := r.log
7066

7167
// Fetch recent cluster health
@@ -74,53 +70,53 @@ func (r *Resources) cleanupRemovedClusterMembers() error {
7470
ts := r.health.timestamp
7571
r.health.mutex.Unlock()
7672

77-
log.Info().Msg("Cleanup routine 2")
78-
7973
// Only accept recent cluster health values
8074
if time.Since(ts) > maxClusterHealthAge {
8175
log.Info().Msg("Cleanup longer than max cluster health exiting")
8276
return nil
8377
}
8478

85-
log.Info().Msg("Cleanup routine 3")
86-
8779
serverFound := func(id string) bool {
8880
_, found := h.Health[driver.ServerID(id)]
89-
log.Info().Bool("found ", found).Str("server id ", id)
9081
return found
9182
}
9283

93-
log.Info().Msg("Cleanup routine 4")
94-
9584
// For over all members that can be removed
9685
status, lastVersion := r.context.GetStatus()
9786
updateStatusNeeded := false
9887
var podNamesToRemove, pvcNamesToRemove []string
9988
status.Members.ForeachServerGroup(func(group api.ServerGroup, list api.MemberStatusList) error {
10089
if group != api.ServerGroupCoordinators && group != api.ServerGroupDBServers {
10190
// We're not interested in these other groups
102-
log.Info().Str("group ", group.AsRole()).Msg("Not interested in group ")
10391
return nil
10492
}
10593
for _, m := range list {
106-
94+
log := log.With().
95+
Str("member", m.ID).
96+
Str("role", group.AsRole()).
97+
Logger()
10798
if serverFound(m.ID) {
10899
// Member is (still) found, skip it
109100
if m.Conditions.Update(api.ConditionTypeMemberOfCluster, true, "", "") {
110-
status.Members.Update(m, group)
101+
if err := status.Members.Update(m, group); err != nil {
102+
log.Warn().Err(err).Msg("Failed to update member")
103+
}
111104
updateStatusNeeded = true
105+
log.Debug().Msg("Updating MemberOfCluster condition to true")
112106
}
113107
continue
114108
} else if !m.Conditions.IsTrue(api.ConditionTypeMemberOfCluster) {
115109
// Member is not yet recorded as member of cluster
116110
if m.Age() < minMemberAge {
111+
log.Debug().Dur("age", m.Age()).Msg("Member age is below minimum for removal")
117112
continue
118113
}
119-
log.Info().Str("member", m.ID).Str("role", group.AsRole()).Msg("Member has never been part of the cluster for a long time. Removing it.")
114+
log.Info().Msg("Member has never been part of the cluster for a long time. Removing it.")
120115
} else {
121116
// Member no longer part of cluster, remove it
122-
log.Info().Str("member", m.ID).Str("role", group.AsRole()).Msg("Member is no longer part of the ArangoDB cluster. Removing it.")
117+
log.Info().Msg("Member is no longer part of the ArangoDB cluster. Removing it.")
123118
}
119+
log.Info().Msg("Removing member")
124120
status.Members.RemoveByID(m.ID, group)
125121
updateStatusNeeded = true
126122
// Remove Pod & PVC (if any)
@@ -134,31 +130,28 @@ func (r *Resources) cleanupRemovedClusterMembers() error {
134130
return nil
135131
})
136132

137-
log.Info().Msg("Cleanup routine 4")
138-
139133
if updateStatusNeeded {
140-
log.Info().Msg("updatestatusneeded ")
134+
log.Debug().Msg("UpdateStatus needed")
141135

142136
if err := r.context.UpdateStatus(status, lastVersion); err != nil {
137+
log.Warn().Err(err).Msg("Failed to update deployment status")
143138
return maskAny(err)
144139
}
145140
}
146141

147-
log.Info().Msg("Cleanup routine 5")
148142
for _, podName := range podNamesToRemove {
143+
log.Info().Str("pod", podName).Msg("Removing obsolete member pod")
149144
if err := r.context.DeletePod(podName); err != nil && !k8sutil.IsNotFound(err) {
150145
log.Warn().Err(err).Str("pod", podName).Msg("Failed to remove obsolete pod")
151146
}
152147
}
153148

154-
log.Info().Msg("Cleanup routine 6")
155149
for _, pvcName := range pvcNamesToRemove {
150+
log.Info().Str("pvc", pvcName).Msg("Removing obsolete member PVC")
156151
if err := r.context.DeletePvc(pvcName); err != nil && !k8sutil.IsNotFound(err) {
157152
log.Warn().Err(err).Str("pvc", pvcName).Msg("Failed to remove obsolete PVC")
158153
}
159154
}
160155

161-
log.Info().Msg("Cleanup routine 7")
162-
163156
return nil
164157
}

0 commit comments

Comments
 (0)