Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.trino.operator.TaskStats Maven / Gradle / Ivy
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.trino.operator;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import io.airlift.units.DataSize;
import io.airlift.units.Duration;
import jakarta.annotation.Nullable;
import org.joda.time.DateTime;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
public class TaskStats
{
private final DateTime createTime;
private final DateTime firstStartTime;
private final DateTime lastStartTime;
private final DateTime terminatingStartTime;
private final DateTime lastEndTime;
private final DateTime endTime;
private final Duration elapsedTime;
private final Duration queuedTime;
private final int totalDrivers;
private final int queuedDrivers;
private final int queuedPartitionedDrivers;
private final long queuedPartitionedSplitsWeight;
private final int runningDrivers;
private final int runningPartitionedDrivers;
private final long runningPartitionedSplitsWeight;
private final int blockedDrivers;
private final int completedDrivers;
private final double cumulativeUserMemory;
private final DataSize userMemoryReservation;
private final DataSize peakUserMemoryReservation;
private final DataSize revocableMemoryReservation;
private final Duration totalScheduledTime;
private final Duration totalCpuTime;
private final Duration totalBlockedTime;
private final boolean fullyBlocked;
private final Set blockedReasons;
private final DataSize physicalInputDataSize;
private final long physicalInputPositions;
private final Duration physicalInputReadTime;
private final DataSize internalNetworkInputDataSize;
private final long internalNetworkInputPositions;
private final DataSize rawInputDataSize;
private final long rawInputPositions;
private final DataSize processedInputDataSize;
private final long processedInputPositions;
private final Duration inputBlockedTime;
private final DataSize outputDataSize;
private final long outputPositions;
private final Duration outputBlockedTime;
private final DataSize writerInputDataSize;
private final DataSize physicalWrittenDataSize;
private final Optional maxWriterCount;
private final int fullGcCount;
private final Duration fullGcTime;
private final List pipelines;
public TaskStats(DateTime createTime, DateTime endTime)
{
this(createTime,
null,
null,
null,
null,
endTime,
new Duration(0, MILLISECONDS),
new Duration(0, MILLISECONDS),
0,
0,
0,
0L,
0,
0,
0L,
0,
0,
0.0,
DataSize.ofBytes(0),
DataSize.ofBytes(0),
DataSize.ofBytes(0),
new Duration(0, MILLISECONDS),
new Duration(0, MILLISECONDS),
new Duration(0, MILLISECONDS),
false,
ImmutableSet.of(),
DataSize.ofBytes(0),
0,
new Duration(0, MILLISECONDS),
DataSize.ofBytes(0),
0,
DataSize.ofBytes(0),
0,
DataSize.ofBytes(0),
0,
new Duration(0, MILLISECONDS),
DataSize.ofBytes(0),
0,
new Duration(0, MILLISECONDS),
DataSize.ofBytes(0),
DataSize.ofBytes(0),
Optional.empty(),
0,
new Duration(0, MILLISECONDS),
ImmutableList.of());
}
@JsonCreator
public TaskStats(
@JsonProperty("createTime") DateTime createTime,
@JsonProperty("firstStartTime") DateTime firstStartTime,
@JsonProperty("lastStartTime") DateTime lastStartTime,
@JsonProperty("terminatingStartTime") DateTime terminatingStartTime,
@JsonProperty("lastEndTime") DateTime lastEndTime,
@JsonProperty("endTime") DateTime endTime,
@JsonProperty("elapsedTime") Duration elapsedTime,
@JsonProperty("queuedTime") Duration queuedTime,
@JsonProperty("totalDrivers") int totalDrivers,
@JsonProperty("queuedDrivers") int queuedDrivers,
@JsonProperty("queuedPartitionedDrivers") int queuedPartitionedDrivers,
@JsonProperty("queuedPartitionedSplitsWeight") long queuedPartitionedSplitsWeight,
@JsonProperty("runningDrivers") int runningDrivers,
@JsonProperty("runningPartitionedDrivers") int runningPartitionedDrivers,
@JsonProperty("runningPartitionedSplitsWeight") long runningPartitionedSplitsWeight,
@JsonProperty("blockedDrivers") int blockedDrivers,
@JsonProperty("completedDrivers") int completedDrivers,
@JsonProperty("cumulativeUserMemory") double cumulativeUserMemory,
@JsonProperty("userMemoryReservation") DataSize userMemoryReservation,
@JsonProperty("peakUserMemoryReservation") DataSize peakUserMemoryReservation,
@JsonProperty("revocableMemoryReservation") DataSize revocableMemoryReservation,
@JsonProperty("totalScheduledTime") Duration totalScheduledTime,
@JsonProperty("totalCpuTime") Duration totalCpuTime,
@JsonProperty("totalBlockedTime") Duration totalBlockedTime,
@JsonProperty("fullyBlocked") boolean fullyBlocked,
@JsonProperty("blockedReasons") Set blockedReasons,
@JsonProperty("physicalInputDataSize") DataSize physicalInputDataSize,
@JsonProperty("physicalInputPositions") long physicalInputPositions,
@JsonProperty("physicalInputReadTime") Duration physicalInputReadTime,
@JsonProperty("internalNetworkInputDataSize") DataSize internalNetworkInputDataSize,
@JsonProperty("internalNetworkInputPositions") long internalNetworkInputPositions,
@JsonProperty("rawInputDataSize") DataSize rawInputDataSize,
@JsonProperty("rawInputPositions") long rawInputPositions,
@JsonProperty("processedInputDataSize") DataSize processedInputDataSize,
@JsonProperty("processedInputPositions") long processedInputPositions,
@JsonProperty("inputBlockedTime") Duration inputBlockedTime,
@JsonProperty("outputDataSize") DataSize outputDataSize,
@JsonProperty("outputPositions") long outputPositions,
@JsonProperty("outputBlockedTime") Duration outputBlockedTime,
@JsonProperty("writerInputDataSize") DataSize writerInputDataSize,
@JsonProperty("physicalWrittenDataSize") DataSize physicalWrittenDataSize,
@JsonProperty("writerCount") Optional writerCount,
@JsonProperty("fullGcCount") int fullGcCount,
@JsonProperty("fullGcTime") Duration fullGcTime,
@JsonProperty("pipelines") List pipelines)
{
this.createTime = requireNonNull(createTime, "createTime is null");
this.firstStartTime = firstStartTime;
this.lastStartTime = lastStartTime;
this.terminatingStartTime = terminatingStartTime;
this.lastEndTime = lastEndTime;
this.endTime = endTime;
this.elapsedTime = requireNonNull(elapsedTime, "elapsedTime is null");
this.queuedTime = requireNonNull(queuedTime, "queuedTime is null");
checkArgument(totalDrivers >= 0, "totalDrivers is negative");
this.totalDrivers = totalDrivers;
checkArgument(queuedDrivers >= 0, "queuedDrivers is negative");
this.queuedDrivers = queuedDrivers;
checkArgument(queuedPartitionedDrivers >= 0, "queuedPartitionedDrivers is negative");
this.queuedPartitionedDrivers = queuedPartitionedDrivers;
checkArgument(queuedPartitionedSplitsWeight >= 0, "queuedPartitionedSplitsWeight must be positive");
this.queuedPartitionedSplitsWeight = queuedPartitionedSplitsWeight;
checkArgument(runningDrivers >= 0, "runningDrivers is negative");
this.runningDrivers = runningDrivers;
checkArgument(runningPartitionedDrivers >= 0, "runningPartitionedDrivers is negative");
this.runningPartitionedDrivers = runningPartitionedDrivers;
checkArgument(runningPartitionedSplitsWeight >= 0, "runningPartitionedSplitsWeight must be positive");
this.runningPartitionedSplitsWeight = runningPartitionedSplitsWeight;
checkArgument(blockedDrivers >= 0, "blockedDrivers is negative");
this.blockedDrivers = blockedDrivers;
checkArgument(completedDrivers >= 0, "completedDrivers is negative");
this.completedDrivers = completedDrivers;
this.cumulativeUserMemory = cumulativeUserMemory;
this.userMemoryReservation = requireNonNull(userMemoryReservation, "userMemoryReservation is null");
this.peakUserMemoryReservation = requireNonNull(peakUserMemoryReservation, "peakUserMemoryReservation is null");
this.revocableMemoryReservation = requireNonNull(revocableMemoryReservation, "revocableMemoryReservation is null");
this.totalScheduledTime = requireNonNull(totalScheduledTime, "totalScheduledTime is null");
this.totalCpuTime = requireNonNull(totalCpuTime, "totalCpuTime is null");
this.totalBlockedTime = requireNonNull(totalBlockedTime, "totalBlockedTime is null");
this.fullyBlocked = fullyBlocked;
this.blockedReasons = ImmutableSet.copyOf(requireNonNull(blockedReasons, "blockedReasons is null"));
this.physicalInputDataSize = requireNonNull(physicalInputDataSize, "physicalInputDataSize is null");
checkArgument(physicalInputPositions >= 0, "physicalInputPositions is negative");
this.physicalInputPositions = physicalInputPositions;
this.physicalInputReadTime = requireNonNull(physicalInputReadTime, "physicalInputReadTime is null");
this.internalNetworkInputDataSize = requireNonNull(internalNetworkInputDataSize, "internalNetworkInputDataSize is null");
checkArgument(internalNetworkInputPositions >= 0, "internalNetworkInputPositions is negative");
this.internalNetworkInputPositions = internalNetworkInputPositions;
this.rawInputDataSize = requireNonNull(rawInputDataSize, "rawInputDataSize is null");
checkArgument(rawInputPositions >= 0, "rawInputPositions is negative");
this.rawInputPositions = rawInputPositions;
this.processedInputDataSize = requireNonNull(processedInputDataSize, "processedInputDataSize is null");
checkArgument(processedInputPositions >= 0, "processedInputPositions is negative");
this.processedInputPositions = processedInputPositions;
this.inputBlockedTime = requireNonNull(inputBlockedTime, "inputBlockedTime is null");
this.outputDataSize = requireNonNull(outputDataSize, "outputDataSize is null");
checkArgument(outputPositions >= 0, "outputPositions is negative");
this.outputPositions = outputPositions;
this.outputBlockedTime = requireNonNull(outputBlockedTime, "outputBlockedTime is null");
this.writerInputDataSize = requireNonNull(writerInputDataSize, "writerInputDataSize is null");
this.physicalWrittenDataSize = requireNonNull(physicalWrittenDataSize, "physicalWrittenDataSize is null");
this.maxWriterCount = requireNonNull(writerCount, "writerCount is null");
checkArgument(fullGcCount >= 0, "fullGcCount is negative");
this.fullGcCount = fullGcCount;
this.fullGcTime = requireNonNull(fullGcTime, "fullGcTime is null");
this.pipelines = ImmutableList.copyOf(requireNonNull(pipelines, "pipelines is null"));
}
@JsonProperty
public DateTime getCreateTime()
{
return createTime;
}
@Nullable
@JsonProperty
public DateTime getFirstStartTime()
{
return firstStartTime;
}
@Nullable
@JsonProperty
public DateTime getLastStartTime()
{
return lastStartTime;
}
@Nullable
@JsonProperty
public DateTime getTerminatingStartTime()
{
return terminatingStartTime;
}
@Nullable
@JsonProperty
public DateTime getLastEndTime()
{
return lastEndTime;
}
@Nullable
@JsonProperty
public DateTime getEndTime()
{
return endTime;
}
@JsonProperty
public Duration getElapsedTime()
{
return elapsedTime;
}
@JsonProperty
public Duration getQueuedTime()
{
return queuedTime;
}
@JsonProperty
public int getTotalDrivers()
{
return totalDrivers;
}
@JsonProperty
public int getQueuedDrivers()
{
return queuedDrivers;
}
@JsonProperty
public int getRunningDrivers()
{
return runningDrivers;
}
@JsonProperty
public int getBlockedDrivers()
{
return blockedDrivers;
}
@JsonProperty
public int getCompletedDrivers()
{
return completedDrivers;
}
@JsonProperty
public double getCumulativeUserMemory()
{
return cumulativeUserMemory;
}
@JsonProperty
public DataSize getUserMemoryReservation()
{
return userMemoryReservation;
}
@JsonProperty
public DataSize getPeakUserMemoryReservation()
{
return peakUserMemoryReservation;
}
@JsonProperty
public DataSize getRevocableMemoryReservation()
{
return revocableMemoryReservation;
}
@JsonProperty
public Duration getTotalScheduledTime()
{
return totalScheduledTime;
}
@JsonProperty
public Duration getTotalCpuTime()
{
return totalCpuTime;
}
@JsonProperty
public Duration getTotalBlockedTime()
{
return totalBlockedTime;
}
@JsonProperty
public boolean isFullyBlocked()
{
return fullyBlocked;
}
@JsonProperty
public Set getBlockedReasons()
{
return blockedReasons;
}
@JsonProperty
public DataSize getPhysicalInputDataSize()
{
return physicalInputDataSize;
}
@JsonProperty
public long getPhysicalInputPositions()
{
return physicalInputPositions;
}
@JsonProperty
public Duration getPhysicalInputReadTime()
{
return physicalInputReadTime;
}
@JsonProperty
public DataSize getInternalNetworkInputDataSize()
{
return internalNetworkInputDataSize;
}
@JsonProperty
public long getInternalNetworkInputPositions()
{
return internalNetworkInputPositions;
}
@JsonProperty
public DataSize getRawInputDataSize()
{
return rawInputDataSize;
}
@JsonProperty
public long getRawInputPositions()
{
return rawInputPositions;
}
@JsonProperty
public DataSize getProcessedInputDataSize()
{
return processedInputDataSize;
}
@JsonProperty
public long getProcessedInputPositions()
{
return processedInputPositions;
}
@JsonProperty
public Duration getInputBlockedTime()
{
return inputBlockedTime;
}
@JsonProperty
public DataSize getOutputDataSize()
{
return outputDataSize;
}
@JsonProperty
public long getOutputPositions()
{
return outputPositions;
}
@JsonProperty
public Duration getOutputBlockedTime()
{
return outputBlockedTime;
}
@JsonProperty
public DataSize getWriterInputDataSize()
{
return writerInputDataSize;
}
@JsonProperty
public DataSize getPhysicalWrittenDataSize()
{
return physicalWrittenDataSize;
}
@JsonProperty
public Optional getMaxWriterCount()
{
return maxWriterCount;
}
@JsonProperty
public List getPipelines()
{
return pipelines;
}
@JsonProperty
public int getQueuedPartitionedDrivers()
{
return queuedPartitionedDrivers;
}
@JsonProperty
public long getQueuedPartitionedSplitsWeight()
{
return queuedPartitionedSplitsWeight;
}
@JsonProperty
public int getRunningPartitionedDrivers()
{
return runningPartitionedDrivers;
}
@JsonProperty
public long getRunningPartitionedSplitsWeight()
{
return runningPartitionedSplitsWeight;
}
@JsonProperty
public int getFullGcCount()
{
return fullGcCount;
}
@JsonProperty
public Duration getFullGcTime()
{
return fullGcTime;
}
public TaskStats summarize()
{
return new TaskStats(
createTime,
firstStartTime,
lastStartTime,
terminatingStartTime,
lastEndTime,
endTime,
elapsedTime,
queuedTime,
totalDrivers,
queuedDrivers,
queuedPartitionedDrivers,
queuedPartitionedSplitsWeight,
runningDrivers,
runningPartitionedDrivers,
runningPartitionedSplitsWeight,
blockedDrivers,
completedDrivers,
cumulativeUserMemory,
userMemoryReservation,
peakUserMemoryReservation,
revocableMemoryReservation,
totalScheduledTime,
totalCpuTime,
totalBlockedTime,
fullyBlocked,
blockedReasons,
physicalInputDataSize,
physicalInputPositions,
physicalInputReadTime,
internalNetworkInputDataSize,
internalNetworkInputPositions,
rawInputDataSize,
rawInputPositions,
processedInputDataSize,
processedInputPositions,
inputBlockedTime,
outputDataSize,
outputPositions,
outputBlockedTime,
writerInputDataSize,
physicalWrittenDataSize,
maxWriterCount,
fullGcCount,
fullGcTime,
ImmutableList.of());
}
public TaskStats summarizeFinal()
{
return new TaskStats(
createTime,
firstStartTime,
lastStartTime,
terminatingStartTime,
lastEndTime,
endTime,
elapsedTime,
queuedTime,
totalDrivers,
queuedDrivers,
queuedPartitionedDrivers,
queuedPartitionedSplitsWeight,
runningDrivers,
runningPartitionedDrivers,
runningPartitionedSplitsWeight,
blockedDrivers,
completedDrivers,
cumulativeUserMemory,
userMemoryReservation,
peakUserMemoryReservation,
revocableMemoryReservation,
totalScheduledTime,
totalCpuTime,
totalBlockedTime,
fullyBlocked,
blockedReasons,
physicalInputDataSize,
physicalInputPositions,
physicalInputReadTime,
internalNetworkInputDataSize,
internalNetworkInputPositions,
rawInputDataSize,
rawInputPositions,
processedInputDataSize,
processedInputPositions,
inputBlockedTime,
outputDataSize,
outputPositions,
outputBlockedTime,
writerInputDataSize,
physicalWrittenDataSize,
maxWriterCount,
fullGcCount,
fullGcTime,
summarizePipelineStats(pipelines));
}
private static List summarizePipelineStats(List pipelines)
{
// Use an exact size ImmutableList builder to avoid a redundant copy in the TaskStats constructor
ImmutableList.Builder results = ImmutableList.builderWithExpectedSize(pipelines.size());
for (PipelineStats pipeline : pipelines) {
results.add(pipeline.summarize());
}
return results.build();
}
}