[STORM-3667] make exceptions more understandable to submitters when topology submission fails due to incorrect worker max heap size config (#3303)
diff --git a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
index a14498b..bee216c 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
@@ -1642,12 +1642,12 @@
@VisibleForTesting
static void validateTopologyWorkerMaxHeapSizeConfigs(
- Map<String, Object> stormConf, StormTopology topology, double defaultWorkerMaxHeapSizeMb) {
+ Map<String, Object> stormConf, StormTopology topology, double defaultWorkerMaxHeapSizeMb) throws InvalidTopologyException {
double largestMemReq = getMaxExecutorMemoryUsageForTopo(topology, stormConf);
double topologyWorkerMaxHeapSize =
ObjectReader.getDouble(stormConf.get(Config.TOPOLOGY_WORKER_MAX_HEAP_SIZE_MB), defaultWorkerMaxHeapSizeMb);
if (topologyWorkerMaxHeapSize < largestMemReq) {
- throw new IllegalArgumentException(
+ throw new InvalidTopologyException(
"Topology will not be able to be successfully scheduled: Config "
+ "TOPOLOGY_WORKER_MAX_HEAP_SIZE_MB="
+ topologyWorkerMaxHeapSize
diff --git a/storm-server/src/test/java/org/apache/storm/daemon/nimbus/NimbusTest.java b/storm-server/src/test/java/org/apache/storm/daemon/nimbus/NimbusTest.java
index 141ada9..09dbc2a 100644
--- a/storm-server/src/test/java/org/apache/storm/daemon/nimbus/NimbusTest.java
+++ b/storm-server/src/test/java/org/apache/storm/daemon/nimbus/NimbusTest.java
@@ -25,6 +25,7 @@
import org.apache.storm.Config;
import org.apache.storm.DaemonConfig;
+import org.apache.storm.generated.InvalidTopologyException;
import org.apache.storm.generated.StormTopology;
import org.apache.storm.scheduler.resource.strategies.priority.DefaultSchedulingPriorityStrategy;
import org.apache.storm.scheduler.resource.strategies.scheduling.DefaultResourceAwareStrategy;
@@ -58,7 +59,7 @@
try {
Nimbus.validateTopologyWorkerMaxHeapSizeConfigs(config1, stormTopology1, 768.0);
fail("Expected exception not thrown");
- } catch (IllegalArgumentException e) {
+ } catch (InvalidTopologyException e) {
//Expected...
}
}