You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@twill.apache.org by ch...@apache.org on 2017/08/07 20:52:31 UTC

[6/6] twill git commit: Updated with exception handling.

Updated with exception handling.

Project: http://git-wip-us.apache.org/repos/asf/twill/repo
Commit: http://git-wip-us.apache.org/repos/asf/twill/commit/2cd848b3
Tree: http://git-wip-us.apache.org/repos/asf/twill/tree/2cd848b3
Diff: http://git-wip-us.apache.org/repos/asf/twill/diff/2cd848b3

Branch: refs/heads/feature/TWILL-241-per-runnable-opts
Commit: 2cd848b348fb09fdcd156676f28204a684745569
Parents: 8a42f8c
Author: Terence Yim <ch...@apache.org>
Authored: Mon Aug 7 13:52:16 2017 -0700
Committer: Terence Yim <ch...@apache.org>
Committed: Mon Aug 7 13:52:16 2017 -0700

----------------------------------------------------------------------
 .../internal/TwillRuntimeSpecification.java     | 48 ++++++++++++++------
 1 file changed, 33 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/twill/blob/2cd848b3/twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java
----------------------------------------------------------------------
diff --git a/twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java b/twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java
index 2974870..6361bd6 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/TwillRuntimeSpecification.java
@@ -105,15 +105,17 @@ public class TwillRuntimeSpecification {
    * Returns the reserved non-heap memory size in MB for the application master.
    */
   public int getAMReservedMemory() {
-    return getReservedMemory(config, Configs.Defaults.YARN_AM_RESERVED_MEMORY_MB);
+    return getReservedMemory(config, Configs.Keys.YARN_AM_RESERVED_MEMORY_MB,
+                             Configs.Defaults.YARN_AM_RESERVED_MEMORY_MB);
   }
 
   /**
    * Returns the reserved non-heap memory size in MB for the given runnable.
    */
   public int getReservedMemory(String runnableName) {
-    int memory = getReservedMemory(runnableConfigs.get(runnableName), -1);
-    return memory < 0 ? getReservedMemory(config, Configs.Defaults.JAVA_RESERVED_MEMORY_MB) : memory;
+    int memory = getReservedMemory(runnableConfigs.get(runnableName), Configs.Keys.JAVA_RESERVED_MEMORY_MB, -1);
+    return memory < 0 ? getReservedMemory(config, Configs.Keys.JAVA_RESERVED_MEMORY_MB,
+                                          Configs.Defaults.JAVA_RESERVED_MEMORY_MB) : memory;
   }
 
   /**
@@ -169,26 +171,42 @@ public class TwillRuntimeSpecification {
    * Returns the minimum heap ratio ({@link Configs.Keys#HEAP_RESERVED_MIN_RATIO}) based on the given configuration.
    */
   private double getMinHeapRatio(@Nullable Map<String, String> config, double defaultValue) {
-    if (config == null) {
+    if (config == null || !config.containsKey(Configs.Keys.HEAP_RESERVED_MIN_RATIO)) {
       return defaultValue;
     }
 
-    double ratio = config.containsKey(Configs.Keys.HEAP_RESERVED_MIN_RATIO) ?
-      Double.parseDouble(config.get(Configs.Keys.HEAP_RESERVED_MIN_RATIO)) : defaultValue;
-    // Ratio can't be <= 0
-    return ratio <= 0d ? defaultValue : ratio;
+    try {
+      double ratio = Double.parseDouble(config.get(Configs.Keys.HEAP_RESERVED_MIN_RATIO));
+      if (ratio <= 0d) {
+        throw new IllegalArgumentException("Minimum heap ratio configured with key '" +
+                                             Configs.Keys.HEAP_RESERVED_MIN_RATIO +
+                                             "' must be > 0. It is configured to " + ratio);
+      }
+      return ratio;
+    } catch (NumberFormatException e) {
+      throw new IllegalArgumentException("Failed to parse the minimum heap ratio from configuration with key '" +
+                                           Configs.Keys.HEAP_RESERVED_MIN_RATIO + "'", e);
+    }
   }
 
   /**
-   * Returns the reserved memory size ({@link Configs.Keys#HEAP_RESERVED_MIN_RATIO}) based on the given configuration.
+   * Returns the reserved memory size based on the given configuration.
    */
-  private int getReservedMemory(@Nullable Map<String, String> config, int defaultValue) {
-    if (config == null) {
+  private int getReservedMemory(@Nullable Map<String, String> config, String key, int defaultValue) {
+    if (config == null || !config.containsKey(key)) {
       return defaultValue;
     }
-    int memory = config.containsKey(Configs.Keys.JAVA_RESERVED_MEMORY_MB) ?
-      Integer.parseInt(config.get(Configs.Keys.JAVA_RESERVED_MEMORY_MB)) : defaultValue;
-    // memory size can't be -ve
-    return memory < 0 ? defaultValue : memory;
+
+    try {
+      int memory = Integer.parseInt(config.get(key));
+      if (memory < 0) {
+        throw new IllegalArgumentException("Reserved memory size configured with key '" + key +
+                                             "' must be >= 0. It is configured to " + memory);
+      }
+      return memory;
+    } catch (NumberFormatException e) {
+      throw new IllegalArgumentException("Failed to parse the reserved memory size from configuration with key '" +
+                                           key + "'", e);
+    }
   }
 }