From d131ca3053f30c65ecb2b774f1f2ff3bb95695cc Mon Sep 17 00:00:00 2001 From: itsankit-google Date: Mon, 25 Mar 2024 10:07:54 +0000 Subject: [PATCH] Add exception information when connection macro evaluation fails due to timeout --- .../etl/common/AbstractServiceRetryableMacroEvaluator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cdap-app-templates/cdap-etl/cdap-etl-core/src/main/java/io/cdap/cdap/etl/common/AbstractServiceRetryableMacroEvaluator.java b/cdap-app-templates/cdap-etl/cdap-etl-core/src/main/java/io/cdap/cdap/etl/common/AbstractServiceRetryableMacroEvaluator.java index be2ffa8378b0..32edd05b37da 100644 --- a/cdap-app-templates/cdap-etl/cdap-etl-core/src/main/java/io/cdap/cdap/etl/common/AbstractServiceRetryableMacroEvaluator.java +++ b/cdap-app-templates/cdap-etl/cdap-etl-core/src/main/java/io/cdap/cdap/etl/common/AbstractServiceRetryableMacroEvaluator.java @@ -137,12 +137,14 @@ public Map evaluateMap(String macroFunction, String... args) long delay = RETRY_BASE_DELAY_MILLIS; double minMultiplier = RETRY_DELAY_MULTIPLIER - RETRY_DELAY_MULTIPLIER * RETRY_RANDOMIZE_FACTOR; double maxMultiplier = RETRY_DELAY_MULTIPLIER + RETRY_DELAY_MULTIPLIER * RETRY_RANDOMIZE_FACTOR; + Exception ex = null; Stopwatch stopWatch = new Stopwatch().start(); try { while (stopWatch.elapsedTime(TimeUnit.MILLISECONDS) < TIMEOUT_MILLIS) { try { return evaluateMacroMap(macroFunction, args); } catch (RetryableException e) { + ex = e; TimeUnit.MILLISECONDS.sleep(delay); delay = (long) (delay * (minMultiplier + Math.random() * (maxMultiplier - minMultiplier + 1))); @@ -158,7 +160,8 @@ public Map evaluateMap(String macroFunction, String... args) } throw new IllegalStateException( "Timed out when trying to evaluate the value for '" + functionName - + "' with args " + Arrays.asList(args)); + + "' with args " + Arrays.asList(args) + " with exception: ", + ex == null ? ex : ex.getCause()); } protected String validateAndRetrieveContent(String serviceName,