@@ -140,6 +140,13 @@ protected virtual async Task OnEventAsync(WatchEventType type, TEntity entity, C
140140 {
141141 MaybeValue < long ? > cachedGeneration ;
142142
143+ // Make sure Finalizers are running if Termination has began.
144+ if ( type != WatchEventType . Deleted && entity . Metadata . DeletionTimestamp is not null && entity . Metadata . Finalizers . Count > 0 )
145+ {
146+ await ReconcileFinalizersSequentialAsync ( entity , cancellationToken ) ;
147+ return ;
148+ }
149+
143150 switch ( type )
144151 {
145152 case WatchEventType . Added :
@@ -161,31 +168,22 @@ protected virtual async Task OnEventAsync(WatchEventType type, TEntity entity, C
161168
162169 break ;
163170 case WatchEventType . Modified :
164- switch ( entity )
165- {
166- case { Metadata . DeletionTimestamp : null } :
167- cachedGeneration = await _entityCache . TryGetAsync < long ? > ( entity . Uid ( ) , token : cancellationToken ) ;
168-
169- // Check if entity spec has changed through "Generation" value increment. Skip reconcile if not changed.
170- if ( cachedGeneration . HasValue && cachedGeneration >= entity . Generation ( ) )
171- {
172- logger . LogDebug (
173- """Entity "{Kind}/{Name}" modification did not modify generation. Skip event.""" ,
174- entity . Kind ,
175- entity . Name ( ) ) ;
176- return ;
177- }
178-
179- // update cached generation since generation now changed
180- await _entityCache . SetAsync ( entity . Uid ( ) , entity . Generation ( ) ?? 1 , token : cancellationToken ) ;
181- await ReconcileModificationAsync ( entity , cancellationToken ) ;
171+ cachedGeneration = await _entityCache . TryGetAsync < long ? > ( entity . Uid ( ) , token : cancellationToken ) ;
182172
183- break ;
184- case { Metadata : { DeletionTimestamp : not null , Finalizers . Count : > 0 } } :
185- await ReconcileFinalizersSequentialAsync ( entity , cancellationToken ) ;
186- break ;
173+ // Check if entity spec has changed through "Generation" value increment. Skip reconcile if not changed.
174+ if ( cachedGeneration . HasValue && cachedGeneration >= entity . Generation ( ) )
175+ {
176+ logger . LogDebug (
177+ """Entity "{Kind}/{Name}" modification did not modify generation. Skip event.""" ,
178+ entity . Kind ,
179+ entity . Name ( ) ) ;
180+ return ;
187181 }
188182
183+ // update cached generation since generation now changed
184+ await _entityCache . SetAsync ( entity . Uid ( ) , entity . Generation ( ) ?? 1 , token : cancellationToken ) ;
185+ await ReconcileModificationAsync ( entity , cancellationToken ) ;
186+
189187 break ;
190188 case WatchEventType . Deleted :
191189 await ReconcileDeletionAsync ( entity , cancellationToken ) ;
0 commit comments