Skip to content

Commit c3d385b

Browse files
committed
Make query JSON more compact for UI
- Serialize data sizes using succinct form (only query json download) - Do not output raw digest in query.json - Do not serialize type information for metrics - Do not serialize type information for operator infos - Cleanup old prunning logic to reduce copying
1 parent 363221f commit c3d385b

File tree

15 files changed

+109
-324
lines changed

15 files changed

+109
-324
lines changed

core/trino-main/src/main/java/io/trino/execution/DistributionSnapshot.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,17 @@
1818
import com.google.common.base.MoreObjects.ToStringHelper;
1919
import io.trino.spi.metrics.Distribution;
2020
import io.trino.spi.metrics.Metric;
21-
import io.trino.spi.metrics.Metrics;
2221

2322
import java.util.Locale;
24-
import java.util.Map;
2523

2624
import static com.google.common.base.MoreObjects.toStringHelper;
27-
import static com.google.common.collect.ImmutableMap.toImmutableMap;
2825
import static java.lang.String.format;
2926

3027
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE) // Do not add @class property
3128
@JsonSerialize
3229
public record DistributionSnapshot(long total, double min, double max, double p01, double p05, double p10, double p25, double p50, double p75, double p90, double p95, double p99)
3330
implements Metric<DistributionSnapshot>
3431
{
35-
public static Metrics pruneMetrics(Metrics metrics)
36-
{
37-
return new Metrics(metrics.getMetrics().entrySet().stream()
38-
.collect(toImmutableMap(
39-
Map.Entry::getKey,
40-
entry -> {
41-
Metric<?> metric = entry.getValue();
42-
if (metric instanceof Distribution) {
43-
return new DistributionSnapshot((Distribution<?>) metric);
44-
}
45-
return metric;
46-
})));
47-
}
48-
4932
public DistributionSnapshot(Distribution<?> distribution)
5033
{
5134
this(

core/trino-main/src/main/java/io/trino/execution/QueryInfo.java

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -448,45 +448,4 @@ public String toString()
448448
.add("fieldNames", fieldNames)
449449
.toString();
450450
}
451-
452-
public QueryInfo pruneDigests()
453-
{
454-
return new QueryInfo(
455-
queryId,
456-
session,
457-
state,
458-
self,
459-
fieldNames,
460-
query,
461-
preparedQuery,
462-
queryStats,
463-
setCatalog,
464-
setSchema,
465-
setPath,
466-
setAuthorizationUser,
467-
resetAuthorizationUser,
468-
setOriginalRoles,
469-
setSessionProperties,
470-
resetSessionProperties,
471-
setRoles,
472-
addedPreparedStatements,
473-
deallocatedPreparedStatements,
474-
startedTransactionId,
475-
clearTransactionId,
476-
updateType,
477-
stages.map(StagesInfo::pruneDigests),
478-
failureInfo,
479-
errorCode,
480-
warnings,
481-
inputs,
482-
output,
483-
referencedTables,
484-
routines,
485-
finalQueryInfo,
486-
resourceGroupId,
487-
queryType,
488-
retryPolicy,
489-
pruned,
490-
version);
491-
}
492451
}

core/trino-main/src/main/java/io/trino/execution/QueryStats.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.Set;
3333

3434
import static com.google.common.base.Preconditions.checkArgument;
35-
import static com.google.common.collect.ImmutableList.toImmutableList;
3635
import static io.airlift.units.DataSize.succinctBytes;
3736
import static io.trino.server.DynamicFilterService.DynamicFiltersStats;
3837
import static java.util.Objects.requireNonNull;
@@ -323,10 +322,7 @@ public QueryStats(
323322
this.stageGcStatistics = ImmutableList.copyOf(requireNonNull(stageGcStatistics, "stageGcStatistics is null"));
324323

325324
this.dynamicFiltersStats = requireNonNull(dynamicFiltersStats, "dynamicFiltersStats is null");
326-
327-
requireNonNull(operatorSummaries, "operatorSummaries is null");
328-
this.operatorSummaries = operatorSummaries.stream().map(OperatorStats::pruneDigests).collect(toImmutableList());
329-
325+
this.operatorSummaries = ImmutableList.copyOf(operatorSummaries);
330326
this.optimizerRulesSummaries = ImmutableList.copyOf(requireNonNull(optimizerRulesSummaries, "optimizerRulesSummaries is null"));
331327
}
332328

core/trino-main/src/main/java/io/trino/execution/StageInfo.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.Map;
2929

3030
import static com.google.common.base.MoreObjects.toStringHelper;
31-
import static com.google.common.collect.ImmutableList.toImmutableList;
3231
import static java.util.Objects.requireNonNull;
3332

3433
@Immutable
@@ -167,21 +166,6 @@ public StageInfo withSubStages(List<StageId> subStages)
167166
failureCause);
168167
}
169168

170-
public StageInfo pruneDigests()
171-
{
172-
return new StageInfo(
173-
stageId,
174-
state,
175-
plan,
176-
coordinatorOnly,
177-
types,
178-
stageStats.pruneDigests(),
179-
tasks.stream().map(TaskInfo::pruneDigests).collect(toImmutableList()),
180-
subStages,
181-
tables,
182-
failureCause);
183-
}
184-
185169
public static StageInfo createInitial(QueryId queryId, StageState state, PlanFragment fragment)
186170
{
187171
return new StageInfo(

core/trino-main/src/main/java/io/trino/execution/StageStats.java

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@
3636
import java.util.Set;
3737

3838
import static com.google.common.base.Preconditions.checkArgument;
39-
import static com.google.common.collect.ImmutableList.toImmutableList;
4039
import static io.airlift.units.DataSize.Unit.BYTE;
41-
import static io.trino.execution.DistributionSnapshot.pruneMetrics;
4240
import static io.trino.execution.StageState.RUNNING;
4341
import static java.lang.Math.min;
4442
import static java.util.Objects.requireNonNull;
@@ -277,9 +275,7 @@ public StageStats(
277275
this.failedPhysicalWrittenDataSize = requireNonNull(failedPhysicalWrittenDataSize, "failedPhysicalWrittenDataSize is null");
278276

279277
this.gcInfo = requireNonNull(gcInfo, "gcInfo is null");
280-
281-
requireNonNull(operatorSummaries, "operatorSummaries is null");
282-
this.operatorSummaries = operatorSummaries.stream().map(OperatorStats::pruneDigests).collect(toImmutableList());
278+
this.operatorSummaries = ImmutableList.copyOf(operatorSummaries);
283279
}
284280

285281
@JsonProperty
@@ -661,69 +657,6 @@ public BasicStageStats toBasicStageStats(StageState stageState)
661657
runningPercentage);
662658
}
663659

664-
public StageStats pruneDigests()
665-
{
666-
return new StageStats(
667-
schedulingComplete,
668-
getSplitDistribution,
669-
splitSourceMetrics,
670-
totalTasks,
671-
runningTasks,
672-
completedTasks,
673-
failedTasks,
674-
totalDrivers,
675-
queuedDrivers,
676-
runningDrivers,
677-
blockedDrivers,
678-
completedDrivers,
679-
cumulativeUserMemory,
680-
failedCumulativeUserMemory,
681-
userMemoryReservation,
682-
revocableMemoryReservation,
683-
totalMemoryReservation,
684-
peakUserMemoryReservation,
685-
peakRevocableMemoryReservation,
686-
spilledDataSize,
687-
totalScheduledTime,
688-
failedScheduledTime,
689-
totalCpuTime,
690-
failedCpuTime,
691-
totalBlockedTime,
692-
fullyBlocked,
693-
blockedReasons,
694-
physicalInputDataSize,
695-
failedPhysicalInputDataSize,
696-
physicalInputPositions,
697-
failedPhysicalInputPositions,
698-
physicalInputReadTime,
699-
failedPhysicalInputReadTime,
700-
internalNetworkInputDataSize,
701-
failedInternalNetworkInputDataSize,
702-
internalNetworkInputPositions,
703-
failedInternalNetworkInputPositions,
704-
processedInputDataSize,
705-
failedProcessedInputDataSize,
706-
processedInputPositions,
707-
failedProcessedInputPositions,
708-
inputBlockedTime,
709-
failedInputBlockedTime,
710-
bufferedDataSize,
711-
outputBufferUtilization,
712-
outputDataSize,
713-
failedOutputDataSize,
714-
outputPositions,
715-
failedOutputPositions,
716-
pruneMetrics(outputBufferMetrics),
717-
outputBlockedTime,
718-
failedOutputBlockedTime,
719-
physicalWrittenDataSize,
720-
failedPhysicalWrittenDataSize,
721-
gcInfo,
722-
operatorSummaries.stream()
723-
.map(OperatorStats::pruneDigests)
724-
.collect(toImmutableList()));
725-
}
726-
727660
public static StageStats createInitial()
728661
{
729662
DataSize zeroBytes = DataSize.of(0, BYTE);

core/trino-main/src/main/java/io/trino/execution/StagesInfo.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,6 @@ public List<StageInfo> getStages()
6666
return stages;
6767
}
6868

69-
public StagesInfo pruneDigests()
70-
{
71-
return new StagesInfo(
72-
outputStageId,
73-
stages.stream().map(StageInfo::pruneDigests).collect(toImmutableList()));
74-
}
75-
7669
@JsonIgnore
7770
public StageInfo getOutputStage()
7871
{

core/trino-main/src/main/java/io/trino/execution/TaskInfo.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ public TaskInfo pruneSpoolingOutputStats()
6464
return new TaskInfo(taskStatus, lastHeartbeat, outputBuffers.pruneSpoolingOutputStats(), noMoreSplits, stats, estimatedMemory, needsPlan);
6565
}
6666

67-
public TaskInfo pruneDigests()
68-
{
69-
return new TaskInfo(taskStatus, lastHeartbeat, outputBuffers.pruneDigests(), noMoreSplits, stats.pruneDigests(), estimatedMemory, needsPlan);
70-
}
71-
7267
@Override
7368
public String toString()
7469
{

core/trino-main/src/main/java/io/trino/execution/buffer/OutputBufferInfo.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.fasterxml.jackson.annotation.JsonCreator;
1717
import com.fasterxml.jackson.annotation.JsonProperty;
1818
import com.google.common.collect.ImmutableList;
19-
import io.trino.execution.DistributionSnapshot;
2019
import io.trino.plugin.base.metrics.TDigestHistogram;
2120
import io.trino.spi.metrics.Metrics;
2221

@@ -193,23 +192,6 @@ public OutputBufferInfo pruneSpoolingOutputStats()
193192
metrics);
194193
}
195194

196-
public OutputBufferInfo pruneDigests()
197-
{
198-
return new OutputBufferInfo(
199-
type,
200-
state,
201-
canAddBuffers,
202-
canAddPages,
203-
totalBufferedBytes,
204-
totalBufferedPages,
205-
totalRowsSent,
206-
totalPagesSent,
207-
pipelinedBufferStates,
208-
Optional.empty(),
209-
spoolingOutputStats,
210-
metrics.map(DistributionSnapshot::pruneMetrics));
211-
}
212-
213195
@Override
214196
public String toString()
215197
{

core/trino-main/src/main/java/io/trino/operator/OperatorStats.java

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
import static com.google.common.base.Preconditions.checkArgument;
3131
import static com.google.common.base.Verify.verify;
32-
import static io.trino.execution.DistributionSnapshot.pruneMetrics;
3332
import static java.lang.Math.max;
3433
import static java.util.Objects.requireNonNull;
3534
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -636,51 +635,6 @@ private static <T> Mergeable<T> mergeInfos(Mergeable<T> base, List<T> others)
636635
return (Mergeable<T>) base.mergeWith(others);
637636
}
638637

639-
public OperatorStats pruneDigests()
640-
{
641-
return new OperatorStats(
642-
stageId,
643-
pipelineId,
644-
operatorId,
645-
planNodeId,
646-
sourceId,
647-
operatorType,
648-
totalDrivers,
649-
addInputCalls,
650-
addInputWall,
651-
addInputCpu,
652-
physicalInputDataSize,
653-
physicalInputPositions,
654-
physicalInputReadTime,
655-
internalNetworkInputDataSize,
656-
internalNetworkInputPositions,
657-
inputDataSize,
658-
inputPositions,
659-
sumSquaredInputPositions,
660-
getOutputCalls,
661-
getOutputWall,
662-
getOutputCpu,
663-
outputDataSize,
664-
outputPositions,
665-
dynamicFilterSplitsProcessed,
666-
pruneMetrics(metrics),
667-
pruneMetrics(connectorMetrics),
668-
pruneMetrics(pipelineMetrics),
669-
physicalWrittenDataSize,
670-
blockedWall,
671-
finishCalls,
672-
finishWall,
673-
finishCpu,
674-
userMemoryReservation,
675-
revocableMemoryReservation,
676-
peakUserMemoryReservation,
677-
peakRevocableMemoryReservation,
678-
peakTotalMemoryReservation,
679-
spilledDataSize,
680-
blockedReason,
681-
info);
682-
}
683-
684638
public OperatorStats summarize()
685639
{
686640
if (info == null || info.isFinal()) {

0 commit comments

Comments
 (0)