From ea49eef19e88034652075f240ff4aaa4d89b184d Mon Sep 17 00:00:00 2001 From: jiaxul <42416890+jiaxul@users.noreply.github.com> Date: Fri, 31 Aug 2018 07:54:52 -0700 Subject: [PATCH] Introduce initialization exception handler in KCL V2 (#369) Added a new method to the WorkerStateChangeListener that is called once all attempts to initialize the scheduler have failed. --- .../java/software/amazon/kinesis/coordinator/Scheduler.java | 3 ++- .../amazon/kinesis/coordinator/WorkerStateChangeListener.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java index 19c9076c..9fa1d721 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java @@ -207,8 +207,9 @@ public class Scheduler implements Runnable { try { initialize(); log.info("Initialization complete. Starting worker loop."); - } catch (RuntimeException e) { + } catch (RuntimeException e) { log.error("Unable to initialize after {} attempts. Shutting down.", maxInitializationAttempts, e); + workerStateChangeListener.onAllInitializationAttemptsFailed(e); shutdown(); } diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java index 0137de30..2ca08aa4 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/WorkerStateChangeListener.java @@ -27,4 +27,7 @@ public interface WorkerStateChangeListener { } void onWorkerStateChange(WorkerState newState); + + default void onAllInitializationAttemptsFailed(Throwable e) { + } }