diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java index 812267d..8896b53 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java @@ -161,6 +161,8 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.SettableFuture; +import org.apache.hadoop.yarn.api.records.NodeId; +import org.apache.hadoop.yarn.event.EventHandler; /** @@ -1513,9 +1515,7 @@ public SignalContainerResponse signalContainer( RMContainer container = scheduler.getRMContainer(containerId); if (container != null) { - this.rmContext.getDispatcher().getEventHandler().handle( - new RMNodeSignalContainerEvent(container.getContainer().getNodeId(), - request)); + handleRMNodeSignalContainerEvent(container, request); RMAuditLogger.logSuccess(callerUGI.getShortUserName(), AuditConstants.SIGNAL_CONTAINER, "ClientRMService", applicationId, containerId); @@ -1532,4 +1532,11 @@ public SignalContainerResponse signalContainer( .newRecordInstance(SignalContainerResponse.class); } + @SuppressWarnings("unchecked") + private void handleRMNodeSignalContainerEvent(RMContainer container, SignalContainerRequest request) { + EventHandler h = rmContext.getDispatcher().getEventHandler(); + NodeId id = container.getContainer().getNodeId(); + + h.handle(new RMNodeSignalContainerEvent(id, request)); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java index 93ce052..14de8c7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NMLivelinessMonitor.java @@ -45,6 +45,7 @@ public void serviceInit(Configuration conf) throws Exception { super.serviceInit(conf); } + @SuppressWarnings("unchecked") @Override protected void expire(NodeId id) { dispatcher.handle( diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java index 76331bf..7d2cf8d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/AMLivelinessMonitor.java @@ -28,8 +28,7 @@ import org.apache.hadoop.yarn.util.SystemClock; public class AMLivelinessMonitor extends AbstractLivelinessMonitor { - - private EventHandler dispatcher; + private final EventHandler dispatcher; public AMLivelinessMonitor(Dispatcher d) { super("AMLivelinessMonitor", new SystemClock()); @@ -41,6 +40,7 @@ public AMLivelinessMonitor(Dispatcher d, Clock clock) { this.dispatcher = d.getEventHandler(); } + @Override public void serviceInit(Configuration conf) throws Exception { super.serviceInit(conf); int expireIntvl = conf.getInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, @@ -50,6 +50,7 @@ public void serviceInit(Configuration conf) throws Exception { } @Override + @SuppressWarnings("unchecked") protected void expire(ApplicationAttemptId id) { dispatcher.handle( new RMAppAttemptEvent(id, RMAppAttemptEventType.EXPIRE)); 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/fair/SchedulingPolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java index 160ba4b..3053f2a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/SchedulingPolicy.java @@ -75,7 +75,7 @@ public static SchedulingPolicy getInstance(Class cla public static SchedulingPolicy parse(String policy) throws AllocationConfigurationException { @SuppressWarnings("rawtypes") - Class clazz; + Class clazz; String text = StringUtils.toLowerCase(policy); if (text.equalsIgnoreCase(FairSharePolicy.NAME)) { clazz = FairSharePolicy.class; @@ -85,10 +85,13 @@ public static SchedulingPolicy parse(String policy) clazz = DominantResourceFairnessPolicy.class; } else { try { - clazz = Class.forName(policy); + clazz = Class.forName(policy).asSubclass(SchedulingPolicy.class); } catch (ClassNotFoundException cnfe) { throw new AllocationConfigurationException(policy + " SchedulingPolicy class not found!"); + } catch (ClassCastException cce) { + throw new AllocationConfigurationException(policy + + " is not an instance of SchedulingPolicy"); } } if (!SchedulingPolicy.class.isAssignableFrom(clazz)) { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java index cd84208..ae21265 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java @@ -22,7 +22,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -115,12 +114,13 @@ import org.junit.Test; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Sets; +import java.util.Collections; public class TestRMRestart extends ParameterizedSchedulerTestBase { private final static File TEMP_DIR = new File(System.getProperty( "test.build.data", "/tmp"), "decommision"); - private File hostFile = new File(TEMP_DIR + File.separator + "hostFile.txt"); + private final File hostFile = + new File(TEMP_DIR + File.separator + "hostFile.txt"); private YarnConfiguration conf; // Fake rmAddr for token-renewal @@ -2121,14 +2121,16 @@ protected RMNodeLabelsManager createNodeLabelManager() { // Add node Label to Node h1->x NodeId n1 = NodeId.newInstance("h1", 0); - nodeLabelManager.addLabelsToNode(ImmutableMap.of(n1, toSet("x"))); + nodeLabelManager.addLabelsToNode(ImmutableMap.of(n1, + Collections.singleton("x"))); clusterNodeLabels.remove("z"); // Remove cluster label z - nodeLabelManager.removeFromClusterNodeLabels(toSet("z")); + nodeLabelManager.removeFromClusterNodeLabels(Collections.singleton("z")); // Replace nodelabel h1->x,y - nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, toSet("y"))); + nodeLabelManager.replaceLabelsOnNode(ImmutableMap.of(n1, + Collections.singleton("y"))); // Wait for updating store.It is expected NodeStore update should happen // very fast since it has separate dispatcher. So waiting for max 5 seconds, @@ -2146,7 +2148,8 @@ protected RMNodeLabelsManager createNodeLabelManager() { Map> nodeLabels = nodeLabelManager.getNodeLabels(); Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size()); - Assert.assertTrue(nodeLabels.get(n1).equals(toSet("y"))); + Assert.assertEquals("Node does not have expected label", + Collections.singleton("y"), nodeLabels.get(n1)); MockRM rm2 = new MockRM(conf, memStore) { @Override @@ -2165,7 +2168,8 @@ protected RMNodeLabelsManager createNodeLabelManager() { nodeLabels = nodeLabelManager.getNodeLabels(); Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size()); - Assert.assertTrue(nodeLabels.get(n1).equals(toSet("y"))); + Assert.assertEquals("Node does not have expected label", + Collections.singleton("y"), nodeLabels.get(n1)); rm1.stop(); rm2.stop(); } @@ -2231,10 +2235,4 @@ public void testRMRestartFailAppAttempt() throws Exception { rm2.waitForState(applicationId, RMAppState.FAILED); Assert.assertEquals(maxAttempt, loadedApp0.getAppAttempts().size()); } - - private Set toSet(E... elements) { - Set set = Sets.newHashSet(elements); - return set; - } - } 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 f0a1d03..9f463ad 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 @@ -157,12 +157,12 @@ private static final String B1 = B + ".b1"; private static final String B2 = B + ".b2"; private static final String B3 = B + ".b3"; - private static float A_CAPACITY = 10.5f; - private static float B_CAPACITY = 89.5f; - private static float A1_CAPACITY = 30; - private static float A2_CAPACITY = 70; - private static float B1_CAPACITY = 79.2f; - private static float B2_CAPACITY = 0.8f; + private static final float A_CAPACITY = 10.5f; + private static final float B_CAPACITY = 89.5f; + private static final float A1_CAPACITY = 30; + private static final float A2_CAPACITY = 70; + private static final float B1_CAPACITY = 79.2f; + private static final float B2_CAPACITY = 0.8f; private static float B3_CAPACITY = 20; private ResourceManager resourceManager = null; @@ -703,7 +703,7 @@ public void testAllocateReorder() throws Exception { LeafQueue q = (LeafQueue) cs.getQueue("default"); Assert.assertNotNull(q); - FairOrderingPolicy fop = new FairOrderingPolicy(); + FairOrderingPolicy fop = new FairOrderingPolicy<>(); fop.setSizeBasedWeight(true); q.setOrderingPolicy(fop);