Skip to content

Commit 06e28c6

Browse files
authored
feat: Add exception handling and re-queueing to finalizers (#244)
1 parent 727a733 commit 06e28c6

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/KubeOps/Operator/Controller/ManagedResourceController{TEntity}.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,12 +287,28 @@ protected async Task HandleResourceFinalization(QueuedEvent? data)
287287
return;
288288
}
289289

290+
var (_, resource, retryCount) = data;
291+
290292
_logger.LogDebug(
291293
@"Finalize resource ""{kind}/{name}"".",
292-
data.Resource.Kind,
293-
data.Resource.Name());
294+
resource.Kind,
295+
resource.Name());
294296

295-
await _finalizerManager.FinalizeAsync(data.Resource);
297+
try
298+
{
299+
await _finalizerManager.FinalizeAsync(data.Resource);
300+
}
301+
catch (Exception e)
302+
{
303+
_logger.LogError(
304+
e,
305+
@"Finalize resource ""{kind}/{name}"" threw an error. Retry attempt {retryAttempt}.",
306+
resource.Kind,
307+
resource.Name(),
308+
retryCount + 1);
309+
_erroredEvents.OnNext(data with { RetryCount = retryCount + 1 });
310+
return;
311+
}
296312
}
297313

298314
private (ResourceEventType ResourceEvent, TEntity Resource) MapCacheResult(

0 commit comments

Comments
 (0)