private PreemptionMessage getPreemptionMessage(boolean strictContract, boolean contract, final ContainerId container) { PreemptionMessage preemptionMessage = recordFactory .newRecordInstance(PreemptionMessage.class); Set<PreemptionContainer> cntrs = new HashSet<PreemptionContainer>(); PreemptionContainer preemptContainer = recordFactory .newRecordInstance(PreemptionContainer.class); preemptContainer.setId(container); cntrs.add(preemptContainer); if (strictContract) { StrictPreemptionContract set = recordFactory .newRecordInstance(StrictPreemptionContract.class); set.setContainers(cntrs); preemptionMessage.setStrictContract(set); } if (contract) { PreemptionContract preemptContract = recordFactory .newRecordInstance(PreemptionContract.class); preemptContract.setContainers(cntrs); preemptionMessage.setContract(preemptContract); } return preemptionMessage; }
@Override public synchronized void setContainers( final Set<PreemptionContainer> containers) { if (null == containers) { builder.clearContainer(); } this.containers = containers; }
private void initIds() { if (containers != null) { return; } StrictPreemptionContractProtoOrBuilder p = viaProto ? proto : builder; List<PreemptionContainerProto> list = p.getContainerList(); containers = new HashSet<PreemptionContainer>(); for (PreemptionContainerProto c : list) { containers.add(convertFromProtoFormat(c)); } }
private void addContainersToProto() { maybeInitBuilder(); builder.clearContainer(); if (containers == null) { return; } Iterable<PreemptionContainerProto> iterable = new Iterable<PreemptionContainerProto>() { @Override public Iterator<PreemptionContainerProto> iterator() { return new Iterator<PreemptionContainerProto>() { Iterator<PreemptionContainer> iter = containers.iterator(); @Override public boolean hasNext() { return iter.hasNext(); } @Override public PreemptionContainerProto next() { return convertToProtoFormat(iter.next()); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }; builder.addAllContainer(iterable); }
private void initPreemptionContainers() { if (containers != null) { return; } PreemptionContractProtoOrBuilder p = viaProto ? proto : builder; List<PreemptionContainerProto> list = p.getContainerList(); containers = new HashSet<PreemptionContainer>(); for (PreemptionContainerProto c : list) { containers.add(convertFromProtoFormat(c)); } }
private void addContainersToProto() { maybeInitBuilder(); builder.clearContainer(); if (null == containers) { return; } Iterable<PreemptionContainerProto> iterable = new Iterable<PreemptionContainerProto>() { @Override public Iterator<PreemptionContainerProto> iterator() { return new Iterator<PreemptionContainerProto>() { Iterator<PreemptionContainer> iter = containers.iterator(); @Override public boolean hasNext() { return iter.hasNext(); } @Override public PreemptionContainerProto next() { return convertToProtoFormat(iter.next()); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }; builder.addAllContainer(iterable); }
@SuppressWarnings("unchecked") private void killContainer(Context ctxt, PreemptionContainer c){ ContainerId reqCont = c.getId(); TaskAttemptId reqTask = ctxt.getTaskAttempt(reqCont); LOG.info("Evicting " + reqTask); dispatcher.handle(new TaskAttemptEvent(reqTask, TaskAttemptEventType.TA_KILL)); // add preemption to counters JobCounterUpdateEvent jce = new JobCounterUpdateEvent(reqTask .getTaskId().getJobId()); jce.addCounterUpdate(JobCounter.TASKS_REQ_PREEMPT, 1); dispatcher.handle(jce); }