public void driverFinished(DriverContext driverContext) { checkNotNull(driverContext, "driverContext is null"); if (!drivers.remove(driverContext)) { throw new IllegalArgumentException("Unknown driver " + driverContext); } DriverStats driverStats = driverContext.getDriverStats(); completedDrivers.getAndIncrement(); // remove the memory reservation memoryReservation.getAndAdd(-driverStats.getMemoryReservation().toBytes()); queuedTime.add(driverStats.getQueuedTime().roundTo(NANOSECONDS)); elapsedTime.add(driverStats.getElapsedTime().roundTo(NANOSECONDS)); totalScheduledTime.getAndAdd(driverStats.getTotalScheduledTime().roundTo(NANOSECONDS)); totalCpuTime.getAndAdd(driverStats.getTotalCpuTime().roundTo(NANOSECONDS)); totalUserTime.getAndAdd(driverStats.getTotalUserTime().roundTo(NANOSECONDS)); totalBlockedTime.getAndAdd(driverStats.getTotalBlockedTime().roundTo(NANOSECONDS)); // merge the operator stats into the operator summary List<OperatorStats> operators = driverStats.getOperatorStats(); for (OperatorStats operator : operators) { // TODO: replace with ConcurrentMap.compute() when we migrate to java 8 OperatorStats updated; OperatorStats current; do { current = operatorSummaries.get(operator.getOperatorId()); if (current != null) { updated = current.add(operator); } else { updated = operator; } } while (!compareAndSet(operatorSummaries, operator.getOperatorId(), current, updated)); } rawInputDataSize.update(driverStats.getRawInputDataSize().toBytes()); rawInputPositions.update(driverStats.getRawInputPositions()); processedInputDataSize.update(driverStats.getProcessedInputDataSize().toBytes()); processedInputPositions.update(driverStats.getProcessedInputPositions()); outputDataSize.update(driverStats.getOutputDataSize().toBytes()); outputPositions.update(driverStats.getOutputPositions()); }
public void addCompletedDataSize(DataSize addedDataSize) { completedBytes.update(addedDataSize.toBytes()); }
public void addCompletedPositions(long positions) { completedPositions.update(positions); }
public void addSplitWallTime(Duration duration) { splitWallTime.update(duration.toMillis()); }
public void splitCompleted() { completedSplits.update(1); }
public void splitStarted() { startedSplits.update(1); }
public void addSplits(int count) { scheduledSplits.update(count); }