@@ -49,23 +49,42 @@ const (
4949func (r * Resources ) runPodFinalizers (ctx context.Context , p * v1.Pod , memberStatus api.MemberStatus , updateMember func (api.MemberStatus ) error ) (util.Interval , error ) {
5050 log := r .log .With ().Str ("pod-name" , p .GetName ()).Logger ()
5151 var removalList []string
52+
53+ isServerContainerDead := ! k8sutil .IsPodServerContainerRunning (p )
54+
5255 for _ , f := range p .ObjectMeta .GetFinalizers () {
5356 switch f {
5457 case constants .FinalizerPodAgencyServing :
5558 log .Debug ().Msg ("Inspecting agency-serving finalizer" )
59+ if isServerContainerDead {
60+ log .Debug ().Msg ("Server Container is dead, removing finalizer" )
61+ removalList = append (removalList , f )
62+ break
63+ }
5664 if err := r .inspectFinalizerPodAgencyServing (ctx , log , p , memberStatus , updateMember ); err == nil {
5765 removalList = append (removalList , f )
5866 } else {
5967 log .Debug ().Err (err ).Str ("finalizer" , f ).Msg ("Cannot remove finalizer yet" )
6068 }
6169 case constants .FinalizerPodDrainDBServer :
6270 log .Debug ().Msg ("Inspecting drain dbserver finalizer" )
71+ if isServerContainerDead {
72+ log .Debug ().Msg ("Server Container is dead, removing finalizer" )
73+ removalList = append (removalList , f )
74+ break
75+ }
6376 if err := r .inspectFinalizerPodDrainDBServer (ctx , log , p , memberStatus , updateMember ); err == nil {
6477 removalList = append (removalList , f )
6578 } else {
6679 log .Debug ().Err (err ).Str ("finalizer" , f ).Msg ("Cannot remove Pod finalizer yet" )
6780 }
6881 case constants .FinalizerDelayPodTermination :
82+ if isServerContainerDead {
83+ log .Debug ().Msg ("Server Container is dead, removing finalizer" )
84+ removalList = append (removalList , f )
85+ break
86+ }
87+
6988 s , _ := r .context .GetStatus ()
7089 _ , group , ok := s .Members .ElementByID (memberStatus .ID )
7190 if ! ok {
0 commit comments