diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java index e28c18c..7ff9050 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java @@ -859,67 +859,102 @@ public void handle(SchedulerEvent event) { switch(event.getType()) { case NODE_ADDED: { - NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent)event; - addNode(nodeAddedEvent.getAddedRMNode()); + if (event instanceof NodeAddedSchedulerEvent) { + NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent) event; + addNode(nodeAddedEvent.getAddedRMNode()); + } else { + LOG.error("NODE_ADDED SchedulerEvent type doesn't match the class instance"); + } } break; case NODE_REMOVED: { - NodeRemovedSchedulerEvent nodeRemovedEvent = (NodeRemovedSchedulerEvent)event; - removeNode(nodeRemovedEvent.getRemovedRMNode()); + if (event instanceof NodeRemovedSchedulerEvent) { + NodeRemovedSchedulerEvent nodeRemovedEvent = (NodeRemovedSchedulerEvent) event; + removeNode(nodeRemovedEvent.getRemovedRMNode()); + } else { + LOG.error("NODE_REMOVED SchedulerEvent type doesn't match the class instance"); + } } break; case NODE_UPDATE: { - NodeUpdateSchedulerEvent nodeUpdatedEvent = (NodeUpdateSchedulerEvent)event; - RMNode node = nodeUpdatedEvent.getRMNode(); - nodeUpdate(node); - if (!scheduleAsynchronously) { - allocateContainersToNode(getNode(node.getNodeID())); + if (event instanceof NodeUpdateSchedulerEvent) { + NodeUpdateSchedulerEvent nodeUpdatedEvent = (NodeUpdateSchedulerEvent)event; + RMNode node = nodeUpdatedEvent.getRMNode(); + nodeUpdate(node); + if (!scheduleAsynchronously) { + allocateContainersToNode(getNode(node.getNodeID())); + } + } else { + LOG.error("NODE_UPDATE SchedulerEvent type doesn't match the class instance"); } } break; case APP_ADDED: { - AppAddedSchedulerEvent appAddedEvent = (AppAddedSchedulerEvent) event; - addApplication(appAddedEvent.getApplicationId(), - appAddedEvent.getQueue(), appAddedEvent.getUser()); + if (event instanceof AppAddedSchedulerEvent) { + AppAddedSchedulerEvent appAddedEvent = (AppAddedSchedulerEvent) event; + addApplication(appAddedEvent.getApplicationId(), + appAddedEvent.getQueue(), appAddedEvent.getUser()); + } else { + LOG.error("APP_ADDED SchedulerEvent type doesn't match the class instance"); + } } break; case APP_REMOVED: { - AppRemovedSchedulerEvent appRemovedEvent = (AppRemovedSchedulerEvent)event; - doneApplication(appRemovedEvent.getApplicationID(), - appRemovedEvent.getFinalState()); + if (event instanceof AppRemovedSchedulerEvent) { + AppRemovedSchedulerEvent appRemovedEvent = (AppRemovedSchedulerEvent)event; + doneApplication(appRemovedEvent.getApplicationID(), + appRemovedEvent.getFinalState()); + } else { + LOG.error("APP_REMOVED SchedulerEvent type doesn't match the class instance"); + } } break; case APP_ATTEMPT_ADDED: { - AppAttemptAddedSchedulerEvent appAttemptAddedEvent = + if (event instanceof AppAttemptAddedSchedulerEvent) { + AppAttemptAddedSchedulerEvent appAttemptAddedEvent = (AppAttemptAddedSchedulerEvent) event; - addApplicationAttempt(appAttemptAddedEvent.getApplicationAttemptId(), - appAttemptAddedEvent.getTransferStateFromPreviousAttempt()); + addApplicationAttempt(appAttemptAddedEvent.getApplicationAttemptId(), + appAttemptAddedEvent.getTransferStateFromPreviousAttempt()); + } else { + LOG.error("APP_ATTEMPT_ADDED SchedulerEvent type " + + "doesn't match the class instance"); + } } break; case APP_ATTEMPT_REMOVED: { - AppAttemptRemovedSchedulerEvent appAttemptRemovedEvent = + if (event instanceof AppAttemptRemovedSchedulerEvent) { + AppAttemptRemovedSchedulerEvent appAttemptRemovedEvent = (AppAttemptRemovedSchedulerEvent) event; - doneApplicationAttempt(appAttemptRemovedEvent.getApplicationAttemptID(), - appAttemptRemovedEvent.getFinalAttemptState(), - appAttemptRemovedEvent.getKeepContainersAcrossAppAttempts()); + doneApplicationAttempt(appAttemptRemovedEvent.getApplicationAttemptID(), + appAttemptRemovedEvent.getFinalAttemptState(), + appAttemptRemovedEvent.getKeepContainersAcrossAppAttempts()); + } else { + LOG.error("APP_ATTEMPT_REMOVED SchedulerEvent type " + + "doesn't match the class instance"); + } } break; case CONTAINER_EXPIRED: { - ContainerExpiredSchedulerEvent containerExpiredEvent = + if (event instanceof ContainerExpiredSchedulerEvent) { + ContainerExpiredSchedulerEvent containerExpiredEvent = (ContainerExpiredSchedulerEvent) event; - ContainerId containerId = containerExpiredEvent.getContainerId(); - completedContainer(getRMContainer(containerId), + ContainerId containerId = containerExpiredEvent.getContainerId(); + completedContainer(getRMContainer(containerId), SchedulerUtils.createAbnormalContainerStatus( - containerId, - SchedulerUtils.EXPIRED_CONTAINER), + containerId, + SchedulerUtils.EXPIRED_CONTAINER), RMContainerEventType.EXPIRE); + } else { + LOG.error("CONTAINER_EXPIRED SchedulerEvent type " + + "doesn't match the class instance"); + } } break; default: diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java index 21fcdec..848790b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java @@ -734,70 +734,105 @@ public void handle(SchedulerEvent event) { switch(event.getType()) { case NODE_ADDED: { - NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent)event; - addNode(nodeAddedEvent.getAddedRMNode()); + if (event instanceof NodeAddedSchedulerEvent) { + NodeAddedSchedulerEvent nodeAddedEvent = (NodeAddedSchedulerEvent)event; + addNode(nodeAddedEvent.getAddedRMNode()); + } else { + LOG.error("NODE_ADDED SchedulerEvent type doesn't match the class instance"); + } } break; case NODE_REMOVED: { - NodeRemovedSchedulerEvent nodeRemovedEvent = (NodeRemovedSchedulerEvent)event; - removeNode(nodeRemovedEvent.getRemovedRMNode()); + if (event instanceof NodeRemovedSchedulerEvent) { + NodeRemovedSchedulerEvent nodeRemovedEvent = (NodeRemovedSchedulerEvent)event; + removeNode(nodeRemovedEvent.getRemovedRMNode()); + } else { + LOG.error("NODE_REMOVED SchedulerEvent type doesn't match the class instance"); + } } break; case NODE_UPDATE: { - NodeUpdateSchedulerEvent nodeUpdatedEvent = - (NodeUpdateSchedulerEvent)event; - nodeUpdate(nodeUpdatedEvent.getRMNode()); + if (event instanceof NodeUpdateSchedulerEvent) { + NodeUpdateSchedulerEvent nodeUpdatedEvent = + (NodeUpdateSchedulerEvent)event; + nodeUpdate(nodeUpdatedEvent.getRMNode()); + } else { + LOG.error("NODE_UPDATE SchedulerEvent type doesn't match the class instance"); + } } break; case APP_ADDED: { - AppAddedSchedulerEvent appAddedEvent = (AppAddedSchedulerEvent) event; - addApplication(appAddedEvent.getApplicationId(), - appAddedEvent.getQueue(), appAddedEvent.getUser()); + if (event instanceof AppAddedSchedulerEvent) { + AppAddedSchedulerEvent appAddedEvent = (AppAddedSchedulerEvent) event; + addApplication(appAddedEvent.getApplicationId(), + appAddedEvent.getQueue(), appAddedEvent.getUser()); + } else { + LOG.error("APP_ADDED SchedulerEvent type doesn't match the class instance"); + } } break; case APP_REMOVED: { - AppRemovedSchedulerEvent appRemovedEvent = (AppRemovedSchedulerEvent)event; - doneApplication(appRemovedEvent.getApplicationID(), - appRemovedEvent.getFinalState()); + if (event instanceof AppRemovedSchedulerEvent) { + AppRemovedSchedulerEvent appRemovedEvent = (AppRemovedSchedulerEvent)event; + doneApplication(appRemovedEvent.getApplicationID(), + appRemovedEvent.getFinalState()); + } else { + LOG.error("APP_REMOVED SchedulerEvent type doesn't match the class instance"); + } } break; case APP_ATTEMPT_ADDED: { - AppAttemptAddedSchedulerEvent appAttemptAddedEvent = + if (event instanceof AppAttemptAddedSchedulerEvent) { + AppAttemptAddedSchedulerEvent appAttemptAddedEvent = (AppAttemptAddedSchedulerEvent) event; - addApplicationAttempt(appAttemptAddedEvent.getApplicationAttemptId(), - appAttemptAddedEvent.getTransferStateFromPreviousAttempt()); + addApplicationAttempt(appAttemptAddedEvent.getApplicationAttemptId(), + appAttemptAddedEvent.getTransferStateFromPreviousAttempt()); + } else { + LOG.error("APP_ATTEMPT_ADDED SchedulerEvent type " + + "doesn't match the class instance"); + } } break; case APP_ATTEMPT_REMOVED: { - AppAttemptRemovedSchedulerEvent appAttemptRemovedEvent = + if (event instanceof AppAttemptRemovedSchedulerEvent) { + AppAttemptRemovedSchedulerEvent appAttemptRemovedEvent = (AppAttemptRemovedSchedulerEvent) event; - try { - doneApplicationAttempt( - appAttemptRemovedEvent.getApplicationAttemptID(), - appAttemptRemovedEvent.getFinalAttemptState(), - appAttemptRemovedEvent.getKeepContainersAcrossAppAttempts()); - } catch(IOException ie) { - LOG.error("Unable to remove application " + try { + doneApplicationAttempt( + appAttemptRemovedEvent.getApplicationAttemptID(), + appAttemptRemovedEvent.getFinalAttemptState(), + appAttemptRemovedEvent.getKeepContainersAcrossAppAttempts()); + } catch(IOException ie) { + LOG.error("Unable to remove application " + appAttemptRemovedEvent.getApplicationAttemptID(), ie); + } + } else { + LOG.error("APP_ATTEMPT_REMOVED SchedulerEvent type " + + "doesn't match the class instance"); } } break; case CONTAINER_EXPIRED: { - ContainerExpiredSchedulerEvent containerExpiredEvent = + if (event instanceof ContainerExpiredSchedulerEvent) { + ContainerExpiredSchedulerEvent containerExpiredEvent = (ContainerExpiredSchedulerEvent) event; - ContainerId containerid = containerExpiredEvent.getContainerId(); - containerCompleted(getRMContainer(containerid), + ContainerId containerid = containerExpiredEvent.getContainerId(); + containerCompleted(getRMContainer(containerid), SchedulerUtils.createAbnormalContainerStatus( - containerid, + containerid, SchedulerUtils.EXPIRED_CONTAINER), RMContainerEventType.EXPIRE); + } else { + LOG.error("CONTAINER_EXPIRED SchedulerEvent type " + + "doesn't match the class instance"); + } } break; default: