From fd500ad440533d517dfa961c07b94815545f31b5 Mon Sep 17 00:00:00 2001 From: Sanoj Punchihewa Date: Wed, 12 Feb 2025 15:01:29 +0530 Subject: [PATCH] Update error message for aggregation issues in Scatter Gather --- .../apache/synapse/mediators/v2/ForEachMediatorV2.java | 9 ++++----- .../org/apache/synapse/mediators/v2/ScatterGather.java | 7 ++++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java index 0e95604aa8..d1753e63d5 100644 --- a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java +++ b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java @@ -286,12 +286,11 @@ public boolean mediate(MessageContext synCtx, ContinuationState continuationStat ((Mediator) mediator).reportCloseStatistics(synCtx, null); } } - // If this a continue without aggregation scenario, return false to end the mediation - if (continueWithoutAggregation) { - return false; - } if (readyToAggregate) { - return aggregateMessages(synCtx, synLog); + if (!continueWithoutAggregation) { + return aggregateMessages(synCtx, synLog); + } + return false; } return result; } diff --git a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java index d6f271ae31..53df2b8f89 100644 --- a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java +++ b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java @@ -594,7 +594,12 @@ private void setJSONResultToVariable(JsonArray variable, Aggregate aggregate) { for (MessageContext synCtx : aggregate.getMessages()) { Object evaluatedResult = aggregationExpression.objectValueOf(synCtx); - variable.add((JsonElement) evaluatedResult); + if (evaluatedResult instanceof JsonElement) { + variable.add((JsonElement) evaluatedResult); + } else { + handleException(aggregate, "Aggregation expression " + aggregationExpression.toString() + + " did not return a valid JSON element", null, synCtx); + } } }