From 49a913e42193065b90dbb076de76b85992587f22 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Wed, 24 Sep 2025 16:28:36 +0200 Subject: [PATCH] fix: handle all exceptions to support Kotlin Handle Exception and not just RuntimeException to support Kotlin and probably other JVM languages which do not have the concept of checked exceptions. --- .../dependent/workflow/AbstractWorkflowExecutor.java | 3 ++- .../operator/processing/dependent/workflow/NodeExecutor.java | 3 ++- .../processing/event/source/polling/PollingEventSource.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutor.java index 6629ed8f62..447f89ab30 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/AbstractWorkflowExecutor.java @@ -111,8 +111,9 @@ protected void markAsExecuting( actualExecutions.put(dependentResourceNode, future); } + // Exception is required because of Kotlin protected synchronized void handleExceptionInExecutor( - DependentResourceNode dependentResourceNode, RuntimeException e) { + DependentResourceNode dependentResourceNode, Exception e) { createOrGetResultFor(dependentResourceNode).withError(e); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/NodeExecutor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/NodeExecutor.java index 740d10710d..4efadff05f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/NodeExecutor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/workflow/NodeExecutor.java @@ -19,7 +19,8 @@ public void run() { try { doRun(dependentResourceNode); - } catch (RuntimeException e) { + } catch (Exception e) { + // Exception is required because of Kotlin workflowExecutor.handleExceptionInExecutor(dependentResourceNode, e); } finally { workflowExecutor.handleNodeExecutionFinish(dependentResourceNode); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java index b7e9740552..fe7c9ce391 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java @@ -73,7 +73,8 @@ public void run() { } getStateAndFillCache(); healthy.set(true); - } catch (RuntimeException e) { + } catch (Exception e) { + // Exception is required because of Kotlin healthy.set(false); log.error("Error during polling.", e); }