From 6fcd8130299df30ffbf72ade12402d2e25bdcf01 Mon Sep 17 00:00:00 2001 From: unidevel Date: Sun, 14 Sep 2025 17:26:50 +0100 Subject: [PATCH 1/3] Fix live plan not showing --- presto-ui/src/components/LivePlan.jsx | 9 ++++----- presto-ui/src/components/QueryDetail.jsx | 2 +- presto-ui/src/components/QueryHeader.jsx | 4 ++-- presto-ui/src/components/QueryOverview.jsx | 4 ++-- presto-ui/src/components/QueryPlanView.jsx | 4 ++-- presto-ui/src/components/QueryStageView.jsx | 10 +++++----- presto-ui/src/components/StageDetail.jsx | 12 ++++++------ 7 files changed, 22 insertions(+), 23 deletions(-) diff --git a/presto-ui/src/components/LivePlan.jsx b/presto-ui/src/components/LivePlan.jsx index 1917639adedb4..f94765b855cd5 100644 --- a/presto-ui/src/components/LivePlan.jsx +++ b/presto-ui/src/components/LivePlan.jsx @@ -160,6 +160,7 @@ type LivePlanState = { render: any, } + export class LivePlan extends React.Component { timeoutId: TimeoutID; @@ -250,7 +251,7 @@ export class LivePlan extends React.Component { class: "plan-edge", style: "stroke-width: 4px", arrowheadClass: "plan-arrowhead", - label: sourceStats.outputDataSize + " / " + formatRows(sourceStats.outputPositions), + label: sourceStats.outputDataSizeInBytes + " / " + formatRows(sourceStats.outputPositions), labelStyle: "color: #fff; font-weight: bold; font-size: 24px;", labelType: "html", }); @@ -308,9 +309,7 @@ export class LivePlan extends React.Component { } componentDidUpdate(prevProps: LivePlanProps, prevState: LivePlanState) { - if (this.state.query !== prevState.query) { - this.updateD3Graph(); - } + this.updateD3Graph(); //$FlowFixMe $('[data-bs-toggle="tooltip"]')?.tooltip?.() } @@ -361,4 +360,4 @@ export class LivePlan extends React.Component { } } -export default LivePlan; \ No newline at end of file +export default LivePlan; diff --git a/presto-ui/src/components/QueryDetail.jsx b/presto-ui/src/components/QueryDetail.jsx index bdb5a5c032b80..959372117d0f2 100644 --- a/presto-ui/src/components/QueryDetail.jsx +++ b/presto-ui/src/components/QueryDetail.jsx @@ -1646,7 +1646,7 @@ export class QueryDetail extends React.Component { Output Data - {query.queryStats.outputDataSize} + {query.queryStats.outputDataSizeInBytes} diff --git a/presto-ui/src/components/QueryHeader.jsx b/presto-ui/src/components/QueryHeader.jsx index ab53f88011e00..9a374016a05a4 100644 --- a/presto-ui/src/components/QueryHeader.jsx +++ b/presto-ui/src/components/QueryHeader.jsx @@ -115,10 +115,10 @@ export class QueryHeader extends React.Component {
diff --git a/presto-ui/src/components/QueryOverview.jsx b/presto-ui/src/components/QueryOverview.jsx index e649a704f016f..ec4b46dab6f1d 100644 --- a/presto-ui/src/components/QueryOverview.jsx +++ b/presto-ui/src/components/QueryOverview.jsx @@ -139,7 +139,7 @@ type QueryStats = { shuffledDataSize: string; peakTotalMemoryReservation: string; outputPositions: number; - outputDataSize: string; + outputDataSizeInBytes: string; writtenOutputPositions: number; writtenOutputLogicalDataSize: string; writtenOutputPhysicalDataSize: string; @@ -1610,7 +1610,7 @@ export default function QueryOverview({ data, show }: { data: QueryData, show: b Output Data - {data.queryStats.outputDataSize} + {data.queryStats.outputDataSizeInBytes} diff --git a/presto-ui/src/components/QueryPlanView.jsx b/presto-ui/src/components/QueryPlanView.jsx index dfa670baee369..3e6511835a8d5 100644 --- a/presto-ui/src/components/QueryPlanView.jsx +++ b/presto-ui/src/components/QueryPlanView.jsx @@ -64,7 +64,7 @@ export default function PlanView({show, data}) { class: "plan-edge", style: "stroke-width: 4px", arrowheadClass: "plan-arrowhead", - label: sourceStats.outputDataSize + " / " + formatRows(sourceStats.outputPositions), + label: sourceStats.outputDataSizeInBytes + " / " + formatRows(sourceStats.outputPositions), labelStyle: "color: #fff; font-weight: bold; font-size: 24px;", labelType: "html", }); @@ -131,4 +131,4 @@ export default function PlanView({show, data}) {
); -} \ No newline at end of file +} diff --git a/presto-ui/src/components/QueryStageView.jsx b/presto-ui/src/components/QueryStageView.jsx index 14ab116629b8c..b67765b8ca3f7 100644 --- a/presto-ui/src/components/QueryStageView.jsx +++ b/presto-ui/src/components/QueryStageView.jsx @@ -62,7 +62,7 @@ function OperatorSummary({ operator }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSize + ")"} + {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} @@ -172,8 +172,8 @@ function OperatorDetail({ index, operator, tasks }) { }, { name: "Output Data Size", - id: "outputDataSize", - supplier: operator => parseDataSize(operator.outputDataSize), + id: "outputDataSizeInBytes", + supplier: operator => parseDataSize(operator.outputDataSizeInBytes), renderer: formatDataSize }, ]; @@ -207,7 +207,7 @@ function OperatorDetail({ index, operator, tasks }) { const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); const rowOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputPositions) / totalWallTime; - const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSize)) / (totalWallTime / 1000.0); + const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSizeInBytes)) / (totalWallTime / 1000.0); return (
@@ -246,7 +246,7 @@ function OperatorDetail({ index, operator, tasks }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSize + ")"} + {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} diff --git a/presto-ui/src/components/StageDetail.jsx b/presto-ui/src/components/StageDetail.jsx index 36ff0a2480c84..debe437e8e9a8 100644 --- a/presto-ui/src/components/StageDetail.jsx +++ b/presto-ui/src/components/StageDetail.jsx @@ -64,7 +64,7 @@ class OperatorSummary extends React.Component { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSize + ")"} + {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} @@ -174,8 +174,8 @@ function OperatorDetail({ index, operator, tasks }) { }, { name: "Output Data Size", - id: "outputDataSize", - supplier: operator => parseDataSize(operator.outputDataSize), + id: "outputDataSizeInBytes", + supplier: operator => parseDataSize(operator.outputDataSizeInBytes), renderer: formatDataSize }, ]; @@ -209,7 +209,7 @@ function OperatorDetail({ index, operator, tasks }) { const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); const rowOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputPositions) / totalWallTime; - const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSize)) / (totalWallTime / 1000.0); + const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSizeInBytes)) / (totalWallTime / 1000.0); return (
@@ -248,7 +248,7 @@ function OperatorDetail({ index, operator, tasks }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSize + ")"} + {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} @@ -649,4 +649,4 @@ export class StageDetail extends React.Component { } } -export default StageDetail; \ No newline at end of file +export default StageDetail; From b8e50b020737956489b27a1aa7ff6aaa7c966a53 Mon Sep 17 00:00:00 2001 From: unidevel Date: Tue, 16 Sep 2025 23:20:44 +0100 Subject: [PATCH 2/3] fix output and input data size --- presto-ui/src/components/LivePlan.jsx | 10 +++++----- presto-ui/src/components/QueryDetail.jsx | 2 +- presto-ui/src/components/QueryOverview.jsx | 4 ++-- presto-ui/src/components/QueryPlanView.jsx | 4 ++-- presto-ui/src/components/QueryStageView.jsx | 21 ++++++++++----------- presto-ui/src/components/StageDetail.jsx | 21 ++++++++++----------- 6 files changed, 30 insertions(+), 32 deletions(-) diff --git a/presto-ui/src/components/LivePlan.jsx b/presto-ui/src/components/LivePlan.jsx index f94765b855cd5..5c12c36bfb661 100644 --- a/presto-ui/src/components/LivePlan.jsx +++ b/presto-ui/src/components/LivePlan.jsx @@ -18,7 +18,7 @@ import ReactDOMServer from "react-dom/server"; import * as dagreD3 from "dagre-d3-es"; import * as d3 from "d3"; -import {formatRows, getStageStateColor, truncateString} from "../utils"; +import {formatRows, getStageStateColor, truncateString, formatDataSizeBytes} from "../utils"; import {initializeGraph, initializeSvg} from "../d3utils"; import {QueryHeader} from "./QueryHeader"; @@ -98,18 +98,18 @@ export class StageStatistics extends React.Component CPU: {stats.totalCpuTime}
- Buffered: {stats.bufferedDataSize}
+ Buffered: {formatDataSizeBytes(stats.bufferedDataSizeInBytes)}
{stats.fullyBlocked ?
Blocked: {stats.totalBlockedTime}
:
Blocked: {stats.totalBlockedTime}
} - Memory: {stats.userMemoryReservation} + Memory: {formatDataSizeBytes(stats.userMemoryReservationInBytes)}
Splits: {"Q:" + stats.queuedDrivers + ", R:" + stats.runningDrivers + ", F:" + stats.completedDrivers}
Lifespans: {stats.completedLifespans + " / " + stats.totalLifespans}
- Input: {stats.rawInputDataSize + " / " + formatRows(stats.rawInputPositions)} + Input: {formatDataSizeBytes(stats.rawInputDataSizeInBytes) + " / " + formatRows(stats.rawInputPositions)}
); @@ -251,7 +251,7 @@ export class LivePlan extends React.Component { class: "plan-edge", style: "stroke-width: 4px", arrowheadClass: "plan-arrowhead", - label: sourceStats.outputDataSizeInBytes + " / " + formatRows(sourceStats.outputPositions), + label: formatDataSizeBytes(sourceStats.outputDataSizeInBytes) + " / " + formatRows(sourceStats.outputPositions), labelStyle: "color: #fff; font-weight: bold; font-size: 24px;", labelType: "html", }); diff --git a/presto-ui/src/components/QueryDetail.jsx b/presto-ui/src/components/QueryDetail.jsx index 959372117d0f2..bdb5a5c032b80 100644 --- a/presto-ui/src/components/QueryDetail.jsx +++ b/presto-ui/src/components/QueryDetail.jsx @@ -1646,7 +1646,7 @@ export class QueryDetail extends React.Component { Output Data - {query.queryStats.outputDataSizeInBytes} + {query.queryStats.outputDataSize} diff --git a/presto-ui/src/components/QueryOverview.jsx b/presto-ui/src/components/QueryOverview.jsx index ec4b46dab6f1d..e649a704f016f 100644 --- a/presto-ui/src/components/QueryOverview.jsx +++ b/presto-ui/src/components/QueryOverview.jsx @@ -139,7 +139,7 @@ type QueryStats = { shuffledDataSize: string; peakTotalMemoryReservation: string; outputPositions: number; - outputDataSizeInBytes: string; + outputDataSize: string; writtenOutputPositions: number; writtenOutputLogicalDataSize: string; writtenOutputPhysicalDataSize: string; @@ -1610,7 +1610,7 @@ export default function QueryOverview({ data, show }: { data: QueryData, show: b Output Data - {data.queryStats.outputDataSizeInBytes} + {data.queryStats.outputDataSize} diff --git a/presto-ui/src/components/QueryPlanView.jsx b/presto-ui/src/components/QueryPlanView.jsx index 3e6511835a8d5..1fe9b3776f290 100644 --- a/presto-ui/src/components/QueryPlanView.jsx +++ b/presto-ui/src/components/QueryPlanView.jsx @@ -20,7 +20,7 @@ import { StageStatistics, PlanNode } from './LivePlan'; import ReactDOMServer from "react-dom/server"; import * as dagreD3 from "dagre-d3-es"; import * as d3 from "d3"; -import { formatRows, getStageStateColor } from "../utils"; +import { formatDataSizeBytes, formatRows, getStageStateColor } from "../utils"; import { initializeGraph } from "../d3utils"; export default function PlanView({show, data}) { @@ -64,7 +64,7 @@ export default function PlanView({show, data}) { class: "plan-edge", style: "stroke-width: 4px", arrowheadClass: "plan-arrowhead", - label: sourceStats.outputDataSizeInBytes + " / " + formatRows(sourceStats.outputPositions), + label: formatDataSizeBytes(sourceStats.outputDataSizeInBytes) + " / " + formatRows(sourceStats.outputPositions), labelStyle: "color: #fff; font-weight: bold; font-size: 24px;", labelType: "html", }); diff --git a/presto-ui/src/components/QueryStageView.jsx b/presto-ui/src/components/QueryStageView.jsx index b67765b8ca3f7..bf2949e8f4664 100644 --- a/presto-ui/src/components/QueryStageView.jsx +++ b/presto-ui/src/components/QueryStageView.jsx @@ -25,7 +25,6 @@ import { formatDataSize, formatDuration, getTaskNumber, - parseDataSize, parseDuration } from "../utils"; import { initializeGraph } from '../d3utils'; @@ -43,7 +42,7 @@ function OperatorSummary({ operator }) { parseDuration(operator.finishWall) + parseDuration(operator.blockedWall); const rowInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputPositions) / (totalWallTime / 1000.0); - const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); + const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputDataSizeInBytes) / (totalWallTime / 1000.0); return (
@@ -62,7 +61,7 @@ function OperatorSummary({ operator }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} + {formatCount(operator.outputPositions) + " rows (" + formatDataSize(operator.outputDataSizeInBytes) + ")"} @@ -94,7 +93,7 @@ function OperatorSummary({ operator }) { Input - {formatCount(operator.inputPositions) + " rows (" + operator.inputDataSize + ")"} + {formatCount(operator.inputPositions) + " rows (" + formatDataSize(operator.inputDataSizeInBytes) + ")"} @@ -160,8 +159,8 @@ function OperatorDetail({ index, operator, tasks }) { }, { name: "Input Data Size", - id: "inputDataSize", - supplier: operator => parseDataSize(operator.inputDataSize), + id: "inputDataSizeInBytes", + supplier: operator => operator.inputDataSizeInBytes, renderer: formatDataSize }, { @@ -173,7 +172,7 @@ function OperatorDetail({ index, operator, tasks }) { { name: "Output Data Size", id: "outputDataSizeInBytes", - supplier: operator => parseDataSize(operator.outputDataSizeInBytes), + supplier: operator => operator.outputDataSizeInBytes, renderer: formatDataSize }, ]; @@ -204,10 +203,10 @@ function OperatorDetail({ index, operator, tasks }) { const totalWallTime = getTotalWallTime(operator); const rowInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputPositions) / totalWallTime; - const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); + const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputDataSizeInBytes) / (totalWallTime / 1000.0); const rowOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputPositions) / totalWallTime; - const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSizeInBytes)) / (totalWallTime / 1000.0); + const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputDataSizeInBytes) / (totalWallTime / 1000.0); return (
@@ -230,7 +229,7 @@ function OperatorDetail({ index, operator, tasks }) { Input - {formatCount(operator.inputPositions) + " rows (" + operator.inputDataSize + ")"} + {formatCount(operator.inputPositions) + " rows (" + formatDataSize(operator.inputDataSizeInBytes) + ")"} @@ -246,7 +245,7 @@ function OperatorDetail({ index, operator, tasks }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} + {formatCount(operator.outputPositions) + " rows (" + formatDataSize(operator.outputDataSizeInBytes) + ")"} diff --git a/presto-ui/src/components/StageDetail.jsx b/presto-ui/src/components/StageDetail.jsx index debe437e8e9a8..d0d8619be1dc9 100644 --- a/presto-ui/src/components/StageDetail.jsx +++ b/presto-ui/src/components/StageDetail.jsx @@ -28,7 +28,6 @@ import { getFirstParameter, getTaskNumber, isQueryEnded, - parseDataSize, parseDuration } from "../utils"; import { initializeGraph, initializeSvg } from "../d3utils"; @@ -45,7 +44,7 @@ class OperatorSummary extends React.Component { const totalWallTime = parseDuration(operator.addInputWall) + parseDuration(operator.getOutputWall) + parseDuration(operator.finishWall) + parseDuration(operator.blockedWall); const rowInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputPositions) / (totalWallTime / 1000.0); - const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); + const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputDataSizeInBytes) / (totalWallTime / 1000.0); return (
@@ -64,7 +63,7 @@ class OperatorSummary extends React.Component { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} + {formatCount(operator.outputPositions) + " rows (" + formatDataSize(operator.outputDataSizeInBytes) + ")"} @@ -96,7 +95,7 @@ class OperatorSummary extends React.Component { Input - {formatCount(operator.inputPositions) + " rows (" + operator.inputDataSize + ")"} + {formatCount(operator.inputPositions) + " rows (" + formatDataSize(operator.inputDataSizeInBytes) + ")"} @@ -162,8 +161,8 @@ function OperatorDetail({ index, operator, tasks }) { }, { name: "Input Data Size", - id: "inputDataSize", - supplier: operator => parseDataSize(operator.inputDataSize), + id: "inputDataSizeInBytes", + supplier: operator => operator.inputDataSizeInBytes, renderer: formatDataSize }, { @@ -175,7 +174,7 @@ function OperatorDetail({ index, operator, tasks }) { { name: "Output Data Size", id: "outputDataSizeInBytes", - supplier: operator => parseDataSize(operator.outputDataSizeInBytes), + supplier: operator => operator.outputDataSizeInBytes, renderer: formatDataSize }, ]; @@ -206,10 +205,10 @@ function OperatorDetail({ index, operator, tasks }) { const totalWallTime = getTotalWallTime(operator); const rowInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputPositions) / totalWallTime; - const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.inputDataSize)) / (totalWallTime / 1000.0); + const byteInputRate = totalWallTime === 0 ? 0 : (1.0 * operator.inputDataSizeInBytes) / (totalWallTime / 1000.0); const rowOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputPositions) / totalWallTime; - const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * parseDataSize(operator.outputDataSizeInBytes)) / (totalWallTime / 1000.0); + const byteOutputRate = totalWallTime === 0 ? 0 : (1.0 * operator.outputDataSizeInBytes) / (totalWallTime / 1000.0); return (
@@ -232,7 +231,7 @@ function OperatorDetail({ index, operator, tasks }) { Input - {formatCount(operator.inputPositions) + " rows (" + operator.inputDataSize + ")"} + {formatCount(operator.inputPositions) + " rows (" + formatDataSize(operator.inputDataSizeInBytes) + ")"} @@ -248,7 +247,7 @@ function OperatorDetail({ index, operator, tasks }) { Output - {formatCount(operator.outputPositions) + " rows (" + operator.outputDataSizeInBytes + ")"} + {formatCount(operator.outputPositions) + " rows (" + formatDataSize(operator.outputDataSizeInBytes) + ")"} From bcfb3d08a9ae7dbb1a23dd3482f8af8aae1c799f Mon Sep 17 00:00:00 2001 From: Timothy Meehan Date: Thu, 2 Oct 2025 19:04:49 -0400 Subject: [PATCH 3/3] fix(ci): Clear more space for Maven checks (#26216) --- .github/workflows/maven-checks.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven-checks.yml b/.github/workflows/maven-checks.yml index acfcc41efdbc3..2b5f35eefe920 100644 --- a/.github/workflows/maven-checks.yml +++ b/.github/workflows/maven-checks.yml @@ -23,10 +23,10 @@ jobs: cancel-in-progress: true steps: - name: Free Disk Space - run: | - df -h - sudo apt-get clean - df -h + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + tool-cache: true + swap-storage: false - uses: actions/checkout@v4 with: show-progress: false