This is an automated email from the ASF dual-hosted git repository.

jeagles pushed a commit to branch branch-0.9
in repository https://gitbox.apache.org/repos/asf/tez.git


The following commit(s) were added to refs/heads/branch-0.9 by this push:
     new 3ff1076  TEZ-4081. Container release idle timeout exception for equal 
min and max values
3ff1076 is described below

commit 3ff1076590836473156af5afd8be98d1b1a712ab
Author: László Bodor <[email protected]>
AuthorDate: Thu Feb 6 09:01:59 2020 -0600

    TEZ-4081. Container release idle timeout exception for equal min and max 
values
    
    Signed-off-by: Jonathan Eagles <[email protected]>
    (cherry picked from commit b078e3a25f892fcd610a1cc15688e825e41a9bcf)
---
 .../tez/dag/app/rm/DagAwareYarnTaskScheduler.java    |  3 ++-
 .../dag/app/rm/TestDagAwareYarnTaskScheduler.java    | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/tez-dag/src/main/java/org/apache/tez/dag/app/rm/DagAwareYarnTaskScheduler.java
 
b/tez-dag/src/main/java/org/apache/tez/dag/app/rm/DagAwareYarnTaskScheduler.java
index 3ba1bfa..31a7142 100644
--- 
a/tez-dag/src/main/java/org/apache/tez/dag/app/rm/DagAwareYarnTaskScheduler.java
+++ 
b/tez-dag/src/main/java/org/apache/tez/dag/app/rm/DagAwareYarnTaskScheduler.java
@@ -1543,7 +1543,8 @@ public class DagAwareYarnTaskScheduler extends 
TaskScheduler
     long getIdleExpirationTimestamp(long now) {
       if (idleExpirationTimestamp == 0) {
         if (idleContainerTimeoutMin > 0) {
-          idleExpirationTimestamp = now + 
random.nextLong(idleContainerTimeoutMin, idleContainerTimeoutMax);
+          idleExpirationTimestamp = now + (idleContainerTimeoutMin == 
idleContainerTimeoutMax ? idleContainerTimeoutMin
+            : random.nextLong(idleContainerTimeoutMin, 
idleContainerTimeoutMax));
         } else {
           idleExpirationTimestamp = Long.MAX_VALUE;
         }
diff --git 
a/tez-dag/src/test/java/org/apache/tez/dag/app/rm/TestDagAwareYarnTaskScheduler.java
 
b/tez-dag/src/test/java/org/apache/tez/dag/app/rm/TestDagAwareYarnTaskScheduler.java
index ad0cf07..3808890 100644
--- 
a/tez-dag/src/test/java/org/apache/tez/dag/app/rm/TestDagAwareYarnTaskScheduler.java
+++ 
b/tez-dag/src/test/java/org/apache/tez/dag/app/rm/TestDagAwareYarnTaskScheduler.java
@@ -1530,6 +1530,26 @@ public class TestDagAwareYarnTaskScheduler {
     verify(mockRMClient).removeContainerRequest(reqv0t0);
   }
 
+  @Test
+  public void testMinMaxContainerIdleMillisAreEqual() throws Exception {
+    AMRMClientAsyncWrapperForTest mockRMClient = new 
AMRMClientAsyncWrapperForTest();
+    Configuration conf = new Configuration();
+    
conf.setLong(TezConfiguration.TEZ_AM_CONTAINER_IDLE_RELEASE_TIMEOUT_MIN_MILLIS, 
10000);
+    
conf.setLong(TezConfiguration.TEZ_AM_CONTAINER_IDLE_RELEASE_TIMEOUT_MAX_MILLIS, 
10000);
+
+    TaskSchedulerContext mockApp = setupMockTaskSchedulerContext("host", 0, 
"url", conf);
+    TaskSchedulerContextDrainable drainableAppCallback = 
createDrainableContext(mockApp);
+    MockClock clock = new MockClock(1000);
+    NewTaskSchedulerForTest scheduler = new 
NewTaskSchedulerForTest(drainableAppCallback, mockRMClient, clock);
+    scheduler.initialize();
+
+    NodeId host1 = NodeId.newInstance("host1", 1);
+    Container container1 = Container.newInstance(null, host1, null, null, 
null, null);
+    HeldContainer heldContainer = scheduler.new HeldContainer(container1);
+    long now = clock.getTime();
+    assertEquals(now + 10000, heldContainer.getIdleExpirationTimestamp(now));
+  }
+
   static class AMRMClientAsyncWrapperForTest extends AMRMClientAsyncWrapper {
     AMRMClientAsyncWrapperForTest() {
       super(new MockAMRMClient(), 10000, null);

Reply via email to