This is an automated email from the ASF dual-hosted git repository.
jeagles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tez.git
The following commit(s) were added to refs/heads/master by this push:
new b078e3a TEZ-4081. Container release idle timeout exception for equal
min and max values
b078e3a is described below
commit b078e3a25f892fcd610a1cc15688e825e41a9bcf
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]>
---
.../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);