|
@@ -2768,7 +2768,11 @@ public class CapacityScheduler extends
|
|
|
.getContainersToKill().isEmpty()) {
|
|
|
list = new ArrayList<>();
|
|
|
for (RMContainer rmContainer : csAssignment.getContainersToKill()) {
|
|
|
- list.add(getSchedulerContainer(rmContainer, false));
|
|
|
+ SchedulerContainer schedulerContainer =
|
|
|
+ getSchedulerContainer(rmContainer, false);
|
|
|
+ if (schedulerContainer != null) {
|
|
|
+ list.add(schedulerContainer);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2776,10 +2780,16 @@ public class CapacityScheduler extends
|
|
|
if (null == list) {
|
|
|
list = new ArrayList<>();
|
|
|
}
|
|
|
- list.add(
|
|
|
- getSchedulerContainer(csAssignment.getExcessReservation(), false));
|
|
|
+ SchedulerContainer schedulerContainer =
|
|
|
+ getSchedulerContainer(csAssignment.getExcessReservation(), false);
|
|
|
+ if (schedulerContainer != null) {
|
|
|
+ list.add(schedulerContainer);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ if (list != null && list.isEmpty()) {
|
|
|
+ list = null;
|
|
|
+ }
|
|
|
return list;
|
|
|
}
|
|
|
|
|
@@ -2864,11 +2874,15 @@ public class CapacityScheduler extends
|
|
|
((RMContainerImpl)rmContainer).setAllocationTags(
|
|
|
new HashSet<>(schedulingRequest.getAllocationTags()));
|
|
|
|
|
|
- allocated = new ContainerAllocationProposal<>(
|
|
|
- getSchedulerContainer(rmContainer, true),
|
|
|
- null, null, NodeType.NODE_LOCAL, NodeType.NODE_LOCAL,
|
|
|
- SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY,
|
|
|
- resource);
|
|
|
+ SchedulerContainer<FiCaSchedulerApp, FiCaSchedulerNode>
|
|
|
+ schedulerContainer = getSchedulerContainer(rmContainer, true);
|
|
|
+ if (schedulerContainer == null) {
|
|
|
+ allocated = null;
|
|
|
+ } else {
|
|
|
+ allocated = new ContainerAllocationProposal<>(schedulerContainer,
|
|
|
+ null, null, NodeType.NODE_LOCAL, NodeType.NODE_LOCAL,
|
|
|
+ SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY, resource);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (null != allocated) {
|
|
@@ -2898,16 +2912,27 @@ public class CapacityScheduler extends
|
|
|
csAssignment.getAssignmentInformation().getAllocationDetails();
|
|
|
if (!allocations.isEmpty()) {
|
|
|
RMContainer rmContainer = allocations.get(0).rmContainer;
|
|
|
- allocated = new ContainerAllocationProposal<>(
|
|
|
- getSchedulerContainer(rmContainer, true),
|
|
|
- getSchedulerContainersToRelease(csAssignment),
|
|
|
- getSchedulerContainer(csAssignment.getFulfilledReservedContainer(),
|
|
|
- false), csAssignment.getType(),
|
|
|
- csAssignment.getRequestLocalityType(),
|
|
|
- csAssignment.getSchedulingMode() != null ?
|
|
|
- csAssignment.getSchedulingMode() :
|
|
|
- SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY,
|
|
|
- csAssignment.getResource());
|
|
|
+ SchedulerContainer<FiCaSchedulerApp, FiCaSchedulerNode>
|
|
|
+ schedulerContainer = getSchedulerContainer(rmContainer, true);
|
|
|
+ if (schedulerContainer == null) {
|
|
|
+ allocated = null;
|
|
|
+ // Decrease unconfirmed resource if app is alive
|
|
|
+ FiCaSchedulerApp app = getApplicationAttempt(
|
|
|
+ rmContainer.getApplicationAttemptId());
|
|
|
+ if (app != null) {
|
|
|
+ app.decUnconfirmedRes(rmContainer.getAllocatedResource());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ allocated = new ContainerAllocationProposal<>(schedulerContainer,
|
|
|
+ getSchedulerContainersToRelease(csAssignment),
|
|
|
+ getSchedulerContainer(
|
|
|
+ csAssignment.getFulfilledReservedContainer(), false),
|
|
|
+ csAssignment.getType(), csAssignment.getRequestLocalityType(),
|
|
|
+ csAssignment.getSchedulingMode() != null ?
|
|
|
+ csAssignment.getSchedulingMode() :
|
|
|
+ SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY,
|
|
|
+ csAssignment.getResource());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Reserved something
|
|
@@ -2915,16 +2940,21 @@ public class CapacityScheduler extends
|
|
|
csAssignment.getAssignmentInformation().getReservationDetails();
|
|
|
if (!reservation.isEmpty()) {
|
|
|
RMContainer rmContainer = reservation.get(0).rmContainer;
|
|
|
- reserved = new ContainerAllocationProposal<>(
|
|
|
- getSchedulerContainer(rmContainer, false),
|
|
|
- getSchedulerContainersToRelease(csAssignment),
|
|
|
- getSchedulerContainer(csAssignment.getFulfilledReservedContainer(),
|
|
|
- false), csAssignment.getType(),
|
|
|
- csAssignment.getRequestLocalityType(),
|
|
|
- csAssignment.getSchedulingMode() != null ?
|
|
|
- csAssignment.getSchedulingMode() :
|
|
|
- SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY,
|
|
|
- csAssignment.getResource());
|
|
|
+ SchedulerContainer<FiCaSchedulerApp, FiCaSchedulerNode>
|
|
|
+ schedulerContainer = getSchedulerContainer(rmContainer, false);
|
|
|
+ if (schedulerContainer == null) {
|
|
|
+ reserved = null;
|
|
|
+ } else {
|
|
|
+ reserved = new ContainerAllocationProposal<>(schedulerContainer,
|
|
|
+ getSchedulerContainersToRelease(csAssignment),
|
|
|
+ getSchedulerContainer(
|
|
|
+ csAssignment.getFulfilledReservedContainer(), false),
|
|
|
+ csAssignment.getType(), csAssignment.getRequestLocalityType(),
|
|
|
+ csAssignment.getSchedulingMode() != null ?
|
|
|
+ csAssignment.getSchedulingMode() :
|
|
|
+ SchedulingMode.RESPECT_PARTITION_EXCLUSIVITY,
|
|
|
+ csAssignment.getResource());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|