@@ -37,8 +37,13 @@ import (
3737 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
3838)
3939
40+ const (
41+ recheckPodFinalizerInterval = time .Second * 10
42+ )
43+
4044// runPodFinalizers goes through the list of pod finalizers to see if they can be removed.
41- func (r * Resources ) runPodFinalizers (ctx context.Context , p * v1.Pod , memberStatus api.MemberStatus , updateMember func (api.MemberStatus ) error ) error {
45+ // Returns: Interval_till_next_inspection, error
46+ func (r * Resources ) runPodFinalizers (ctx context.Context , p * v1.Pod , memberStatus api.MemberStatus , updateMember func (api.MemberStatus ) error ) (time.Duration , error ) {
4247 log := r .log .With ().Str ("pod-name" , p .GetName ()).Logger ()
4348 var removalList []string
4449 for _ , f := range p .ObjectMeta .GetFinalizers () {
@@ -55,7 +60,7 @@ func (r *Resources) runPodFinalizers(ctx context.Context, p *v1.Pod, memberStatu
5560 if err := r .inspectFinalizerPodDrainDBServer (ctx , log , p , memberStatus , updateMember ); err == nil {
5661 removalList = append (removalList , f )
5762 } else {
58- log .Debug ().Err (err ).Str ("finalizer" , f ).Msg ("Cannot remove finalizer yet" )
63+ log .Debug ().Err (err ).Str ("finalizer" , f ).Msg ("Cannot remove Pod finalizer yet" )
5964 }
6065 }
6166 }
@@ -65,10 +70,15 @@ func (r *Resources) runPodFinalizers(ctx context.Context, p *v1.Pod, memberStatu
6570 ignoreNotFound := false
6671 if err := k8sutil .RemovePodFinalizers (log , kubecli , p , removalList , ignoreNotFound ); err != nil {
6772 log .Debug ().Err (err ).Msg ("Failed to update pod (to remove finalizers)" )
68- return maskAny (err )
73+ return 0 , maskAny (err )
74+ } else {
75+ log .Debug ().Strs ("finalizers" , removalList ).Msg ("Removed finalizer(s) from Pod" )
6976 }
77+ } else {
78+ // Check again at given interval
79+ return recheckPodFinalizerInterval , nil
7080 }
71- return nil
81+ return maxPodInspectorInterval , nil
7282}
7383
7484// inspectFinalizerPodAgencyServing checks the finalizer condition for agency-serving.
@@ -131,14 +141,16 @@ func (r *Resources) inspectFinalizerPodAgencyServing(ctx context.Context, log ze
131141 return maskAny (fmt .Errorf ("No more remaining agents" ))
132142 }
133143 if err := agency .AreAgentsHealthy (ctx , agencyConns ); err != nil {
134- log .Debug ().Err (err ).Msg ("Remaining agents are not health " )
144+ log .Debug ().Err (err ).Msg ("Remaining agents are not healthy " )
135145 return maskAny (err )
136146 }
137147
138148 // Remaining agents are healthy, we can remove this one and trigger a delete of the PVC
139- if err := pvcs .Delete (memberStatus .PersistentVolumeClaimName , & metav1.DeleteOptions {}); err != nil {
149+ if err := pvcs .Delete (memberStatus .PersistentVolumeClaimName , & metav1.DeleteOptions {}); err != nil && ! k8sutil . IsNotFound ( err ) {
140150 log .Warn ().Err (err ).Msg ("Failed to delete PVC for member" )
141151 return maskAny (err )
152+ } else {
153+ log .Debug ().Str ("pvc-name" , memberStatus .PersistentVolumeClaimName ).Msg ("Removed PVC of member so agency can be completely replaced" )
142154 }
143155
144156 return nil
0 commit comments