Skip to content

Commit 3eefc38

Browse files
committed
Various code cleanup
1 parent 85918bd commit 3eefc38

File tree

2 files changed

+10
-88
lines changed

2 files changed

+10
-88
lines changed

pkg/deployment/resources/pod_finalizers.go

Lines changed: 9 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ package resources
2424

2525
import (
2626
"context"
27-
"fmt"
2827
"time"
2928

3029
"github.com/rs/zerolog"
@@ -103,90 +102,19 @@ func (r *Resources) inspectFinalizerPodAgencyServing(ctx context.Context, log ze
103102
// inspectFinalizerPodDrainDBServer checks the finalizer condition for drain-dbserver.
104103
// It returns nil if the finalizer can be removed.
105104
func (r *Resources) inspectFinalizerPodDrainDBServer(ctx context.Context, log zerolog.Logger, p *v1.Pod, memberStatus api.MemberStatus, updateMember func(api.MemberStatus) error) error {
106-
// Inspect member phase
107-
if memberStatus.Phase.IsFailed() {
108-
log.Debug().Msg("Pod is already failed, safe to remove drain dbserver finalizer")
109-
return nil
110-
}
111-
// Inspect deployment deletion state
112-
apiObject := r.context.GetAPIObject()
113-
if apiObject.GetDeletionTimestamp() != nil {
114-
log.Debug().Msg("Entire deployment is being deleted, safe to remove drain dbserver finalizer")
115-
return nil
116-
}
117-
118-
// Check node the pod is scheduled on
119-
dbserverDataWillBeGone := false
120-
if p.Spec.NodeName != "" {
121-
node, err := r.context.GetKubeCli().CoreV1().Nodes().Get(p.Spec.NodeName, metav1.GetOptions{})
122-
if err != nil {
123-
log.Warn().Err(err).Msg("Failed to get node for member")
124-
return maskAny(err)
125-
}
126-
if node.Spec.Unschedulable {
127-
dbserverDataWillBeGone = true
128-
}
129-
}
130-
131-
// Check PVC
132-
pvcs := r.context.GetKubeCli().CoreV1().PersistentVolumeClaims(apiObject.GetNamespace())
133-
pvc, err := pvcs.Get(memberStatus.PersistentVolumeClaimName, metav1.GetOptions{})
134-
if err != nil {
135-
log.Warn().Err(err).Msg("Failed to get PVC for member")
105+
if err := r.prepareDBServerPodTermination(ctx, log, p, memberStatus, updateMember); err != nil {
106+
// Pod cannot be terminated yet
136107
return maskAny(err)
137108
}
138-
if k8sutil.IsPersistentVolumeClaimMarkedForDeletion(pvc) {
139-
dbserverDataWillBeGone = true
140-
}
141-
142-
// Is this a simple pod restart?
143-
if !dbserverDataWillBeGone {
144-
log.Debug().Msg("Pod is just being restarted, safe to remove drain dbserver finalizer")
145-
return nil
146-
}
147109

148-
// Inspect cleaned out state
149-
log.Debug().Msg("DBServer data is being deleted, so we will cleanout the dbserver first")
150-
c, err := r.context.GetDatabaseClient(ctx)
151-
if err != nil {
152-
log.Debug().Err(err).Msg("Failed to create member client")
153-
return maskAny(err)
154-
}
155-
cluster, err := c.Cluster(ctx)
156-
if err != nil {
157-
log.Debug().Err(err).Msg("Failed to access cluster")
158-
return maskAny(err)
159-
}
160-
cleanedOut, err := cluster.IsCleanedOut(ctx, memberStatus.ID)
161-
if err != nil {
110+
// Remaining agents are healthy, we can remove this one and trigger a delete of the PVC
111+
pvcs := r.context.GetKubeCli().CoreV1().PersistentVolumeClaims(r.context.GetNamespace())
112+
if err := pvcs.Delete(memberStatus.PersistentVolumeClaimName, &metav1.DeleteOptions{}); err != nil && !k8sutil.IsNotFound(err) {
113+
log.Warn().Err(err).Msg("Failed to delete PVC for member")
162114
return maskAny(err)
115+
} else {
116+
log.Debug().Str("pvc-name", memberStatus.PersistentVolumeClaimName).Msg("Removed PVC of member")
163117
}
164-
if cleanedOut {
165-
// Cleanout completed
166-
if memberStatus.Conditions.Update(api.ConditionTypeCleanedOut, true, "CleanedOut", "") {
167-
if err := updateMember(memberStatus); err != nil {
168-
return maskAny(err)
169-
}
170-
}
171-
// Trigger PVC removal
172-
if err := pvcs.Delete(memberStatus.PersistentVolumeClaimName, &metav1.DeleteOptions{}); err != nil {
173-
log.Warn().Err(err).Msg("Failed to delete PVC for member")
174-
return maskAny(err)
175-
}
176118

177-
log.Debug().Msg("Server is cleaned out. Save to remove drain dbserver finalizer")
178-
return nil
179-
}
180-
// Not cleaned out yet, check member status
181-
if memberStatus.Conditions.IsTrue(api.ConditionTypeTerminated) {
182-
log.Warn().Msg("Member is already terminated before it could be cleaned out. Not good, but removing drain dbserver finalizer because we cannot do anything further")
183-
return nil
184-
}
185-
// Ensure the cleanout is triggered
186-
log.Debug().Msg("Server is not yet clean out. Triggering a clean out now")
187-
if err := cluster.CleanOutServer(ctx, memberStatus.ID); err != nil {
188-
log.Debug().Err(err).Msg("Failed to clean out server")
189-
return maskAny(err)
190-
}
191-
return maskAny(fmt.Errorf("Server is not yet cleaned out"))
119+
return nil
192120
}

pkg/deployment/resources/pod_termination.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,7 @@ func (r *Resources) prepareDBServerPodTermination(ctx context.Context, log zerol
189189
return maskAny(err)
190190
}
191191
}
192-
// Trigger PVC removal
193-
if err := pvcs.Delete(memberStatus.PersistentVolumeClaimName, &metav1.DeleteOptions{}); err != nil {
194-
log.Warn().Err(err).Msg("Failed to delete PVC for member")
195-
return maskAny(err)
196-
}
197-
198-
log.Debug().Msg("Server is cleaned out. Save to remove drain dbserver finalizer")
192+
log.Debug().Msg("DBServer is cleaned out.")
199193
return nil
200194
}
201195
// Not cleaned out yet, check member status

0 commit comments

Comments
 (0)