You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by je...@apache.org on 2014/09/25 21:13:42 UTC

git commit: TEZ-1618. LocalTaskSchedulerService.getTotalResources() and getAvailableResources() can get negative if JVM memory is larger than 2GB (Chen He via jeagles)

Repository: tez
Updated Branches:
  refs/heads/master df375e82f -> d1588c2e2


TEZ-1618. LocalTaskSchedulerService.getTotalResources() and getAvailableResources() can get negative if JVM memory is larger than 2GB (Chen He via jeagles)


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

Branch: refs/heads/master
Commit: d1588c2e26aff66fc78740e71fc7fa091c913f8c
Parents: df375e8
Author: Jonathan Eagles <je...@gmail.com>
Authored: Thu Sep 25 14:13:29 2014 -0500
Committer: Jonathan Eagles <je...@gmail.com>
Committed: Thu Sep 25 14:13:29 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../dag/app/rm/LocalTaskSchedulerService.java   | 23 +++++++++++++-------
 2 files changed, 16 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tez/blob/d1588c2e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index eda417a..44a450a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -26,6 +26,7 @@ ALL CHANGES:
   TEZ-1499. Add SortMergeJoinExample to tez-examples
   TEZ-1613. Decrease running time for TestAMRecovery
   TEZ-1240. Add system test for propagation of diagnostics for errors
+  TEZ-1618. LocalTaskSchedulerService.getTotalResources() and getAvailableResources() can get negative if JVM memory is larger than 2GB
 
 Release 0.5.1: Unreleased
 

http://git-wip-us.apache.org/repos/asf/tez/blob/d1588c2e/tez-dag/src/main/java/org/apache/tez/dag/app/rm/LocalTaskSchedulerService.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/rm/LocalTaskSchedulerService.java b/tez-dag/src/main/java/org/apache/tez/dag/app/rm/LocalTaskSchedulerService.java
index 490ffeb..026ed7d 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/rm/LocalTaskSchedulerService.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/rm/LocalTaskSchedulerService.java
@@ -27,6 +27,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 
+import com.google.common.primitives.Ints;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -91,10 +92,17 @@ public class LocalTaskSchedulerService extends TaskSchedulerService {
 
   @Override
   public Resource getAvailableResources() {
-    Resource freeResources = Resource.newInstance(
-        (int)Runtime.getRuntime().freeMemory()/(1024*1024),
-        Runtime.getRuntime().availableProcessors());
-    return freeResources;
+    long memory = Runtime.getRuntime().freeMemory();
+    int cores = Runtime.getRuntime().availableProcessors();
+    return createResource(memory, cores);
+  }
+
+  static Resource createResource(long runtimeMemory, int core) {
+    if (runtimeMemory < 0 || core < 0) {
+      throw new IllegalArgumentException("Negative Memory or Core provided!"
+          + "mem: "+runtimeMemory+" core:"+core);
+    }
+    return Resource.newInstance(Ints.checkedCast(runtimeMemory/(1024*1024)), core);
   }
 
   @Override
@@ -108,10 +116,9 @@ public class LocalTaskSchedulerService extends TaskSchedulerService {
 
   @Override
   public Resource getTotalResources() {
-    Resource totalResources = Resource.newInstance(
-        (int)Runtime.getRuntime().maxMemory()/(1024*1024),
-        Runtime.getRuntime().availableProcessors());
-    return totalResources;
+    long memory = Runtime.getRuntime().maxMemory();
+    int cores = Runtime.getRuntime().availableProcessors();
+    return createResource(memory, cores);
   }
 
   @Override