totalBlockedTime += operator.getBlockedWall().roundTo(NANOSECONDS);
}
OperatorStats inputOperator = getFirst(operators, null);
DataSize rawInputDataSize;
long rawInputPositions;
DataSize processedInputDataSize;
long processedInputPositions;
DataSize outputDataSize;
long outputPositions;
if (inputOperator != null) {
rawInputDataSize = inputOperator.getInputDataSize();
rawInputPositions = inputOperator.getInputPositions();
processedInputDataSize = inputOperator.getOutputDataSize();
processedInputPositions = inputOperator.getOutputPositions();
OperatorStats outputOperator = checkNotNull(getLast(operators, null));
outputDataSize = outputOperator.getOutputDataSize();
outputPositions = outputOperator.getOutputPositions();
}
else {
rawInputDataSize = new DataSize(0, BYTE);
rawInputPositions = 0;
processedInputDataSize = new DataSize(0, BYTE);
processedInputPositions = 0;
outputDataSize = new DataSize(0, BYTE);
outputPositions = 0;
}
long startNanos = this.startNanos.get();
if (startNanos < createNanos) {
startNanos = System.nanoTime();
}
Duration queuedTime = new Duration(startNanos - createNanos, NANOSECONDS);
long endNanos = this.endNanos.get();
Duration elapsedTime;
if (endNanos >= startNanos) {
elapsedTime = new Duration(endNanos - createNanos, NANOSECONDS);
}
else {
elapsedTime = new Duration(0, NANOSECONDS);
}
return new DriverStats(
createdTime,
executionStartTime.get(),
executionEndTime.get(),
queuedTime.convertToMostSuccinctTimeUnit(),
elapsedTime.convertToMostSuccinctTimeUnit(),
new DataSize(memoryReservation.get(), BYTE).convertToMostSuccinctDataSize(),
new Duration(totalScheduledTime, NANOSECONDS).convertToMostSuccinctTimeUnit(),
new Duration(totalCpuTime, NANOSECONDS).convertToMostSuccinctTimeUnit(),
new Duration(totalUserTime, NANOSECONDS).convertToMostSuccinctTimeUnit(),
new Duration(totalBlockedTime, NANOSECONDS).convertToMostSuccinctTimeUnit(),
rawInputDataSize.convertToMostSuccinctDataSize(),
rawInputPositions,
processedInputDataSize.convertToMostSuccinctDataSize(),
processedInputPositions,
outputDataSize.convertToMostSuccinctDataSize(),
outputPositions,
ImmutableList.copyOf(Iterables.transform(operatorContexts, operatorStatsGetter())));
}