@Override protected boolean matchesSafely(final TaskStatusEvent item) { return item.getStatus().getContainerId() != null; } };
@Override protected boolean matchesSafely(final TaskStatusEvent event) { final State actual = event.getStatus().getState(); for (final State state : possibleStates) { if (state == actual) { return true; } } return false; } };
@Override public TaskStatus.State apply(@Nullable TaskStatusEvent input) { if (input != null) { return input.getStatus().getState(); } return null; } };
private void putBack(TaskStatusEvent event) { final JobId key = event.getStatus().getJob().getId(); final Deque<TaskStatusEvent> queue = getDeque(key); synchronized (queue) { if (queue.size() >= MAX_QUEUE_SIZE) { // already full, just toss the event return; } queue.push(event); count.incrementAndGet(); } }
final JobId id = current.getStatus().getJob().getId(); final Deque<TaskStatusEvent> deque = items.get(id); if (deque == null) {
private void add(TaskStatusEvent item) throws InterruptedException { // If too many "globally", toss them while (count.get() >= MAX_TOTAL_SIZE) { getNext(); } final JobId key = item.getStatus().getJob().getId(); final Deque<TaskStatusEvent> deque = getDeque(key); synchronized (deque) { // if too many in the particular deque, toss them while (deque.size() >= MAX_QUEUE_SIZE) { deque.remove(); count.decrementAndGet(); } deque.add(item); count.incrementAndGet(); } try { backingStore.set(items); } catch (ClosedByInterruptException e) { log.debug("Writing task status event to backing store was interrupted"); } catch (IOException e) { // We are best effort after all... log.warn("Failed to write task status event to backing store", e); } }
@Override public TaskStatusEvents call() throws Exception { final TaskStatusEvents events = client.jobHistory(jobId).get(); final int size = events.getEvents().size(); if (size == 0) { return null; } // We sometimes get more than one PULLING_IMAGE in the history if a pull tempfails. int requiredEventCount = -1; for (int i = 0; i < size; i++) { if (events.getEvents().get(i).getStatus().getState() != State.PULLING_IMAGE) { requiredEventCount = i + 5; break; } } if (requiredEventCount == -1) { return null; } if (size < requiredEventCount) { return null; } return events; } });
@Override public Object call() throws Exception { final TaskStatusEvents jobHistory = getOrNull(client.jobHistory(jobId)); for (final TaskStatusEvent event : jobHistory.getEvents()) { if (event.getStatus().getState() == FAILED) { return true; } } return null; } });
final String host = checkNotNull(event.getHost()); final long timestamp = event.getTimestamp(); final TaskStatus status = checkNotNull(event.getStatus()); final State state = checkNotNull(status.getState()); String containerId = status.getContainerId();
final JobId jobId = item.getStatus().getJob().getId(); final String historyPath = Paths.historyJobHostEventsTimestamp( jobId, hostname, item.getTimestamp()); log.debug("writing queued item to zookeeper {} {}", item.getStatus().getJob().getId(), item.getTimestamp()); client.createAndSetData(historyPath, item.getStatus().toJsonBytes());
if (event.getStatus().getState() != State.PULLING_IMAGE) {
@Override protected byte[] toBytes(final TaskStatusEvent event) { return event.getStatus().toJsonBytes(); }
@Override protected String getZkEventsPath(TaskStatusEvent event) { final JobId jobId = event.getStatus().getJob().getId(); return Paths.historyJobHostEvents(jobId, hostname); }
@Override protected String getKey(final TaskStatusEvent event) { return event.getStatus().getJob().getId().toString(); }
String host = checkNotNull(event.getHost()); long timestamp = checkNotNull(event.getTimestamp()); TaskStatus status = checkNotNull(event.getStatus()); State state = checkNotNull(status.getState()); String containerId = status.getContainerId();