You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by bi...@apache.org on 2020/07/23 11:12:47 UTC
[hadoop] branch trunk updated: YARN-10315. Avoid sending
RMNodeResourceupdate event if resource is same. Contributed by Sushil Ks.
This is an automated email from the ASF dual-hosted git repository.
bibinchundatt pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new bfcd775 YARN-10315. Avoid sending RMNodeResourceupdate event if resource is same. Contributed by Sushil Ks.
bfcd775 is described below
commit bfcd775381f1e0b94b17ce3cfca7eade95df1ea8
Author: bibinchundatt <bi...@apache.org>
AuthorDate: Thu Jul 23 16:40:24 2020 +0530
YARN-10315. Avoid sending RMNodeResourceupdate event if resource is same. Contributed by Sushil Ks.
---
.../server/resourcemanager/scheduler/AbstractYarnScheduler.java | 4 +++-
.../scheduler/capacity/TestCapacityScheduler.java | 9 +++++++++
.../server/resourcemanager/scheduler/fair/TestFairScheduler.java | 9 +++++++++
.../server/resourcemanager/scheduler/fifo/TestFifoScheduler.java | 9 +++++++++
4 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
index 70d2714..43d8f3a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java
@@ -1188,7 +1188,9 @@ public abstract class AbstractYarnScheduler
// If the node is decommissioning, send an update to have the total
// resource equal to the used resource, so no available resource to
// schedule.
- if (nm.getState() == NodeState.DECOMMISSIONING && schedulerNode != null) {
+ if (nm.getState() == NodeState.DECOMMISSIONING && schedulerNode != null
+ && schedulerNode.getTotalResource().compareTo(
+ schedulerNode.getAllocatedResource()) != 0) {
this.rmContext
.getDispatcher()
.getEventHandler()
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
index a272851..1c7020a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
@@ -38,6 +38,8 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.IOException;
@@ -4726,6 +4728,13 @@ public class TestCapacityScheduler extends CapacitySchedulerTestBase {
availableResource.getMemorySize());
Assert.assertEquals("Available Resource Memory Size should be 0", 0,
availableResource.getVirtualCores());
+ // Kick off another heartbeat where the RMNodeResourceUpdateEvent would
+ // be skipped for DECOMMISSIONING state since the total resource is
+ // already equal to used resource from the previous heartbeat.
+ when(spyNode.getState()).thenReturn(NodeState.DECOMMISSIONING);
+ resourceManager.getResourceScheduler().handle(
+ new NodeUpdateSchedulerEvent(spyNode));
+ verify(mockDispatcher, times(4)).getEventHandler();
}
@Test
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
index 7882ba3..78e8e2d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
@@ -136,6 +136,8 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@SuppressWarnings("unchecked")
@@ -4956,6 +4958,13 @@ public class TestFairScheduler extends FairSchedulerTestBase {
.getSchedulerNode(nm_0.getNodeId()).getUnallocatedResource();
assertThat(availableResource.getMemorySize()).isEqualTo(0);
assertThat(availableResource.getVirtualCores()).isEqualTo(0);
+ // Kick off another heartbeat where the RMNodeResourceUpdateEvent would
+ // be skipped for DECOMMISSIONING state since the total resource is
+ // already equal to used resource from the previous heartbeat.
+ when(spyNode.getState()).thenReturn(NodeState.DECOMMISSIONING);
+ resourceManager.getResourceScheduler().handle(
+ new NodeUpdateSchedulerEvent(spyNode));
+ verify(mockDispatcher, times(1)).getEventHandler();
}
private NodeManager registerNode(String hostName, int containerManagerPort,
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java
index 9b3657e..4065053 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java
@@ -24,6 +24,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.IOException;
@@ -1314,6 +1316,13 @@ public class TestFifoScheduler {
.getSchedulerNode(nm_0.getNodeId()).getUnallocatedResource();
assertThat(availableResource.getMemorySize()).isEqualTo(0);
assertThat(availableResource.getVirtualCores()).isEqualTo(0);
+ // Kick off another heartbeat where the RMNodeResourceUpdateEvent would
+ // be skipped for DECOMMISSIONING state since the total resource is
+ // already equal to used resource from the previous heartbeat.
+ when(spyNode.getState()).thenReturn(NodeState.DECOMMISSIONING);
+ resourceManager.getResourceScheduler().handle(
+ new NodeUpdateSchedulerEvent(spyNode));
+ verify(mockDispatcher, times(4)).getEventHandler();
}
private void checkApplicationResourceUsage(int expected,
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org