sparkforensics-server 0.6.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +16 -7
- package/package.json +1 -1
- package/public/assets/AutoscalingChurn-DenWKTv-.js +1 -0
- package/public/assets/CacheUtilization-DLz7NdjV.js +1 -0
- package/public/assets/CachingOpportunity-zpQIqhzm.js +1 -0
- package/public/assets/ChartTheme-DAiARbLP.js +8 -0
- package/public/assets/ColdStart-C-9HjxWl.js +1 -0
- package/public/assets/ConfigAudit-D0V9tcrJ.js +1 -0
- package/public/assets/CoreUsageArea-yeerrljd.js +1 -0
- package/public/assets/Dashboard-DkUPrHKV.js +1 -0
- package/public/assets/DisclosureContext-DK1_iz6J.js +1 -0
- package/public/assets/DuplicatePlanSubtree-xDNDbCd3.js +1 -0
- package/public/assets/DurationHistogram-B6jsE0Ov.js +1 -0
- package/public/assets/EmptyState-C1uL40VU.js +1 -0
- package/public/assets/ExecutorUtilization-DXDZKmSc.js +1 -0
- package/public/assets/GcPressure-MRf7I4IG.js +1 -0
- package/public/assets/ImpactEstimate-Dm3xWbzV.js +1 -0
- package/public/assets/IncompleteRun-CaLOhMtf.js +1 -0
- package/public/assets/JobFailures-CzmzlvhO.js +1 -0
- package/public/assets/MemoryUtilization-AWUMUjCH.js +1 -0
- package/public/assets/NestedLoopJoin-C9sNr6Ss.js +1 -0
- package/public/assets/OverBroadcast-BOmRE6ca.js +1 -0
- package/public/assets/PartitionHint-BL2EmJfE.js +1 -0
- package/public/assets/PartitionSizing-BzBySvUq.js +1 -0
- package/public/assets/PlanExplorer-DdiQRcJU.js +1 -0
- package/public/assets/PlanGraphRoute-CIH9gBuR.js +1 -0
- package/public/assets/PlanView-B1hxzFRs.js +2 -0
- package/public/assets/PythonUdf-DvgCCueD.js +1 -0
- package/public/assets/RetryWaste-uXXu_CyM.js +1 -0
- package/public/assets/RowPagination-C-LzWkI5.js +1 -0
- package/public/assets/RowStatusCluster-Dbtmte7l.js +1 -0
- package/public/assets/ShuffleIO-nALwzC1_.js +1 -0
- package/public/assets/Skew-CHMEKgvk.js +1 -0
- package/public/assets/SlowHost-yyvjpHk6.js +1 -0
- package/public/assets/SmallFiles-y6odJ97n.js +1 -0
- package/public/assets/SpeculationWaste-C-SD2LOt.js +1 -0
- package/public/assets/Spill-DHTMmOup.js +1 -0
- package/public/assets/StageFailed-CQ3DxC9R.js +1 -0
- package/public/assets/StageFindingGroup-BgYLyj5q.js +1 -0
- package/public/assets/StageHeader-CIETkjVZ.js +1 -0
- package/public/assets/StagePill--P7PDd3s.js +1 -0
- package/public/assets/StageShape-BIv8vx_o.js +1 -0
- package/public/assets/StageSlowness-MMqzERxN.js +1 -0
- package/public/assets/Straggler-BgrY7AyW.js +1 -0
- package/public/assets/TaskFailures-BHHyKYTs.js +1 -0
- package/public/assets/TinyTask-DDScNhCl.js +1 -0
- package/public/assets/UnderBroadcast-CGIC04TI.js +1 -0
- package/public/assets/WidgetLeadSummary-CXFZP00C.js +1 -0
- package/public/assets/button-DbpTz2yk.js +1 -0
- package/public/assets/charts-vendor-CtTxwTeu.js +59 -0
- package/public/assets/composite-C9Nu2EI9.js +1 -0
- package/public/assets/d3-vendor-DNlD2-cz.js +1 -0
- package/public/assets/detector-registry-Bp8hrLua.js +2 -0
- package/public/assets/downsample-WmNM1qc9.js +1 -0
- package/public/assets/finding-anchor-Dr40LkS9.js +1 -0
- package/public/assets/findings-of-type-BL2u3RGZ.js +1 -0
- package/public/assets/impact-sort-mC5ISgX8.js +1 -0
- package/public/assets/inbox-KPU1Gppm.js +1 -0
- package/public/assets/index-CaRVPvAT.css +2 -0
- package/public/assets/index-fDiwfuoO.js +14 -0
- package/public/assets/inertValue-L9VxV0VE.js +1 -0
- package/public/assets/layout.worker-CLcBHxVp.js +3 -0
- package/public/assets/{parser-worker-CA5RxqKc.js → parser-worker-CRIOPMOW.js} +8 -8
- package/public/assets/plan-graph-vendor-Ce6d4HU6.js +7 -0
- package/public/assets/react-vendor-C6KcUD36.js +9 -0
- package/public/assets/select-BHqOqun5.js +1 -0
- package/public/assets/toggle-DPeN6aNa.js +1 -0
- package/public/assets/toggle-group-Kl3uyHSr.js +1 -0
- package/public/assets/usePagedRows-BafD6bEN.js +1 -0
- package/public/assets/useRecentFiles-DzJZAoOT.js +3 -0
- package/public/assets/useRegisterFieldControl-pQv-ZDoU.js +1 -0
- package/public/assets/useScrollLock-BCxn_dMp.js +1 -0
- package/public/assets/useSortMode-DjrAN-z4.js +1 -0
- package/public/docs/404.html +3 -3
- package/public/docs/assets/{app.CnWL6bKV.js → app.1gvzd5Zb.js} +1 -1
- package/public/docs/assets/chunks/@localSearchIndexroot.DS2TQP5_.js +1 -0
- package/public/docs/assets/chunks/{VPLocalSearchBox.C0IBKeRQ.js → VPLocalSearchBox.CNxT3s0I.js} +1 -1
- package/public/docs/assets/chunks/{theme.BH-2HuRf.js → theme.C5lLqUv7.js} +2 -2
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.CqKM_jEG.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.CqKM_jEG.lean.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_board-widgets_caching-and-memory.md.CQgn1t_M.js → contributor-guide_architecture_board-widgets_caching-and-memory.md.BYDo3ClR.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets_plan-advisor.md.ajUAVdbc.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_board-widgets_visual-system-and-templating.md.wulOueeB.js → contributor-guide_architecture_board-widgets_visual-system-and-templating.md.WqY74T0T.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.WqY74T0T.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.CHHgywoP.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_detector-contract.md.N4hhenrA.lean.js → contributor-guide_architecture_detector-contract.md.CHHgywoP.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.DIz3_oz9.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.DIz3_oz9.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.WH4tRHPL.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_detector-contract_threshold-tables.md.Dp3c40rx.lean.js → contributor-guide_architecture_detector-contract_threshold-tables.md.WH4tRHPL.lean.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_drill-down.md.CqZPrdo9.js → contributor-guide_architecture_drill-down.md.yB-Hz2XT.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_drill-down.md.CqZPrdo9.lean.js → contributor-guide_architecture_drill-down.md.yB-Hz2XT.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_drill-down_plan-graph.md.BQZE04sw.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_drill-down_plan-graph.md.DwOozIEs.lean.js → contributor-guide_architecture_drill-down_plan-graph.md.BQZE04sw.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.K71YB-Rr.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.DfvbqEUu.lean.js → contributor-guide_architecture_impact-estimation.md.K71YB-Rr.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.DLCAffwn.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.Cwm1jHmn.lean.js → contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.DLCAffwn.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.JFrzDMwo.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.JFrzDMwo.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_overview.md.nxkpOhgf.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.U-9KMDFK.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.lean.js → contributor-guide_architecture_state-and-history_run-comparison-internals.md.U-9KMDFK.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.BrSz8Ezh.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.B7rjSF_h.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.B7rjSF_h.lean.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_widget-rendering_list-sort-mode.md.BuHKgH0C.js → contributor-guide_architecture_widget-rendering_list-sort-mode.md.37hcZJ7q.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_widget-rendering_row-expand-contract.md.ZT89u9f1.js → contributor-guide_architecture_widget-rendering_row-expand-contract.md.mK_VmAWk.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BAnhi2-d.js → contributor-guide_architecture_worker-protocol.md.Br6OE7RW.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.Br6OE7RW.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.IVyaXrGe.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol_cli-and-mcp.md.BX1XnFbq.lean.js → contributor-guide_architecture_worker-protocol_cli-and-mcp.md.IVyaXrGe.lean.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DSVFPpWb.js → contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DVSXn-bb.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-availability.md.CjimIDBY.js → contributor-guide_architecture_worker-protocol_evidence-availability.md.D3S5cyOW.js} +2 -2
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-availability.md.CjimIDBY.lean.js → contributor-guide_architecture_worker-protocol_evidence-availability.md.D3S5cyOW.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_evidence-report.md.CtmCU57I.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol_evidence-report.md.CiQl1MLb.lean.js → contributor-guide_architecture_worker-protocol_evidence-report.md.CtmCU57I.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_contributing.md.DBW4drtZ.js +1 -0
- package/public/docs/assets/contributor-guide_development-setup.md.B21ZTDhn.js +15 -0
- package/public/docs/assets/contributor-guide_development-setup.md.B21ZTDhn.lean.js +1 -0
- package/public/docs/assets/contributor-guide_testing.md.DpkozNoG.js +4 -0
- package/public/docs/assets/{contributor-guide_testing.md.By6XGR9a.lean.js → contributor-guide_testing.md.DpkozNoG.lean.js} +1 -1
- package/public/docs/assets/{index.md.CHJVslga.js → index.md.lMm7SUMz.js} +1 -1
- package/public/docs/assets/{index.md.CHJVslga.lean.js → index.md.lMm7SUMz.lean.js} +1 -1
- package/public/docs/assets/{style.CyK9Ss73.css → style.Cfxqlj0y.css} +1 -1
- package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.C0pcQoNc.js +29 -0
- package/public/docs/assets/{user-guide_getting-started_ci-and-automation.md.BEepbDDL.lean.js → user-guide_getting-started_ci-and-automation.md.C0pcQoNc.lean.js} +1 -1
- package/public/docs/assets/user-guide_getting-started_reading-the-dashboard.md.CGaxPX_1.js +1 -0
- package/public/docs/assets/{user-guide_getting-started_tuning-thresholds.md.B_MyjyZm.js → user-guide_getting-started_tuning-thresholds.md.BGVE-wrc.js} +2 -2
- package/public/docs/assets/{user-guide_getting-started_tuning-thresholds.md.B_MyjyZm.lean.js → user-guide_getting-started_tuning-thresholds.md.BGVE-wrc.lean.js} +1 -1
- package/public/docs/assets/{user-guide_mcp-tools.md.C65SjWUL.js → user-guide_mcp-tools.md.49r3L2YE.js} +1 -1
- package/public/docs/assets/{user-guide_mcp-tools_compare-runs.md.Cc_gLoix.js → user-guide_mcp-tools_compare-runs.md.BQ_kIptC.js} +11 -6
- package/public/docs/assets/user-guide_mcp-tools_compare-runs.md.BQ_kIptC.lean.js +1 -0
- package/public/docs/assets/user-guide_mcp-tools_diagnose-run.md.azCZXkH8.js +44 -0
- package/public/docs/assets/{user-guide_mcp-tools_diagnose-run.md.BP1vnHA5.lean.js → user-guide_mcp-tools_diagnose-run.md.azCZXkH8.lean.js} +1 -1
- package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.js → user-guide_mcp-tools_evaluate-budgets.md.dpQpRQ7z.js} +2 -2
- package/public/docs/assets/{user-guide_mcp-tools_evaluate-budgets.md.BB0nDY3Z.lean.js → user-guide_mcp-tools_evaluate-budgets.md.dpQpRQ7z.lean.js} +1 -1
- package/public/docs/assets/{user-guide_mcp-tools_get-finding-evidence.md.rKyu4wts.js → user-guide_mcp-tools_get-finding-evidence.md.CH6FkNLX.js} +2 -1
- package/public/docs/assets/{user-guide_mcp-tools_get-finding-evidence.md.rKyu4wts.lean.js → user-guide_mcp-tools_get-finding-evidence.md.CH6FkNLX.lean.js} +1 -1
- package/public/docs/assets/user-guide_run-comparison.md.B_LOkdBf.js +1 -0
- package/public/docs/assets/user-guide_run-comparison.md.B_LOkdBf.lean.js +1 -0
- package/public/docs/assets/user-guide_understanding-findings.md.C4riKCKl.js +1 -0
- package/public/docs/assets/user-guide_understanding-findings.md.C4riKCKl.lean.js +1 -0
- package/public/docs/contributor-guide/architecture/board-widgets/caching-and-memory.html +6 -6
- package/public/docs/contributor-guide/architecture/board-widgets/plan-advisor.html +6 -6
- package/public/docs/contributor-guide/architecture/board-widgets/visual-system-and-templating.html +6 -6
- package/public/docs/contributor-guide/architecture/board-widgets.html +6 -6
- package/public/docs/contributor-guide/architecture/detector-contract/plan-attribution.html +6 -6
- package/public/docs/contributor-guide/architecture/detector-contract/threshold-tables.html +6 -6
- package/public/docs/contributor-guide/architecture/detector-contract.html +6 -6
- package/public/docs/contributor-guide/architecture/drill-down/plan-graph.html +6 -6
- package/public/docs/contributor-guide/architecture/drill-down.html +6 -6
- package/public/docs/contributor-guide/architecture/impact-estimation/caveats-tuning-and-coverage.html +6 -6
- package/public/docs/contributor-guide/architecture/impact-estimation/stage-union-rollup.html +6 -6
- package/public/docs/contributor-guide/architecture/impact-estimation.html +6 -6
- package/public/docs/contributor-guide/architecture/index.html +5 -5
- package/public/docs/contributor-guide/architecture/overview.html +6 -6
- package/public/docs/contributor-guide/architecture/state-and-history/history-server-intake.html +5 -5
- package/public/docs/contributor-guide/architecture/state-and-history/run-comparison-internals.html +6 -6
- package/public/docs/contributor-guide/architecture/state-and-history.html +5 -5
- package/public/docs/contributor-guide/architecture/widget-rendering/findings-tab.html +6 -6
- package/public/docs/contributor-guide/architecture/widget-rendering/investigation-routing.html +5 -5
- package/public/docs/contributor-guide/architecture/widget-rendering/list-sort-mode.html +6 -6
- package/public/docs/contributor-guide/architecture/widget-rendering/reference-section.html +5 -5
- package/public/docs/contributor-guide/architecture/widget-rendering/row-expand-contract.html +6 -6
- package/public/docs/contributor-guide/architecture/widget-rendering.html +6 -6
- package/public/docs/contributor-guide/architecture/worker-protocol/cli-and-mcp.html +6 -6
- package/public/docs/contributor-guide/architecture/worker-protocol/core-and-event-validation.html +6 -6
- package/public/docs/contributor-guide/architecture/worker-protocol/evidence-availability.html +7 -7
- package/public/docs/contributor-guide/architecture/worker-protocol/evidence-report.html +6 -6
- package/public/docs/contributor-guide/architecture/worker-protocol.html +6 -6
- package/public/docs/contributor-guide/contributing.html +6 -6
- package/public/docs/contributor-guide/development-setup.html +8 -8
- package/public/docs/contributor-guide/testing.html +9 -6
- package/public/docs/hashmap.json +1 -1
- package/public/docs/index.html +6 -6
- package/public/docs/logo-dark.svg +1 -0
- package/public/docs/logo-light.svg +1 -0
- package/public/docs/tuning-reference/anti-patterns.html +5 -5
- package/public/docs/tuning-reference/aqe.html +5 -5
- package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +5 -5
- package/public/docs/tuning-reference/bottleneck-cold-start.html +5 -5
- package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +5 -5
- package/public/docs/tuning-reference/bottleneck-failures.html +5 -5
- package/public/docs/tuning-reference/bottleneck-gc.html +5 -5
- package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +5 -5
- package/public/docs/tuning-reference/bottleneck-memory-utilization.html +5 -5
- package/public/docs/tuning-reference/bottleneck-retry-waste.html +5 -5
- package/public/docs/tuning-reference/bottleneck-shuffle.html +5 -5
- package/public/docs/tuning-reference/bottleneck-skew.html +5 -5
- package/public/docs/tuning-reference/bottleneck-slow-host.html +5 -5
- package/public/docs/tuning-reference/bottleneck-small-files.html +5 -5
- package/public/docs/tuning-reference/bottleneck-spill.html +5 -5
- package/public/docs/tuning-reference/bottleneck-straggler.html +5 -5
- package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +5 -5
- package/public/docs/tuning-reference/bottleneck-utilization.html +5 -5
- package/public/docs/tuning-reference/caching.html +5 -5
- package/public/docs/tuning-reference/cluster-config.html +5 -5
- package/public/docs/tuning-reference/config.html +5 -5
- package/public/docs/tuning-reference/data-formats.html +5 -5
- package/public/docs/tuning-reference/index.html +5 -5
- package/public/docs/tuning-reference/intro.html +5 -5
- package/public/docs/tuning-reference/joins.html +5 -5
- package/public/docs/tuning-reference/memory-model.html +5 -5
- package/public/docs/tuning-reference/metrics.html +5 -5
- package/public/docs/tuning-reference/partitioning.html +5 -5
- package/public/docs/tuning-reference/pyspark.html +5 -5
- package/public/docs/tuning-reference/shuffle.html +5 -5
- package/public/docs/tuning-reference/spark-architecture.html +5 -5
- package/public/docs/tuning-reference/table-formats.html +5 -5
- package/public/docs/user-guide/alternative-log-retrieval/managed-platforms.html +5 -5
- package/public/docs/user-guide/alternative-log-retrieval/ssh-bastion.html +5 -5
- package/public/docs/user-guide/alternative-log-retrieval.html +5 -5
- package/public/docs/user-guide/getting-started/ci-and-automation.html +16 -11
- package/public/docs/user-guide/getting-started/reading-the-dashboard.html +6 -6
- package/public/docs/user-guide/getting-started/regression-metric-keys.html +5 -5
- package/public/docs/user-guide/getting-started/tuning-thresholds.html +7 -7
- package/public/docs/user-guide/getting-started.html +5 -5
- package/public/docs/user-guide/mcp-tools/compare-runs.html +16 -11
- package/public/docs/user-guide/mcp-tools/diagnose-run.html +28 -7
- package/public/docs/user-guide/mcp-tools/evaluate-budgets.html +6 -6
- package/public/docs/user-guide/mcp-tools/get-finding-documentation.html +5 -5
- package/public/docs/user-guide/mcp-tools/get-finding-evidence.html +7 -6
- package/public/docs/user-guide/mcp-tools/get-reference-doc.html +5 -5
- package/public/docs/user-guide/mcp-tools/get-run-summary.html +5 -5
- package/public/docs/user-guide/mcp-tools/list-runs.html +5 -5
- package/public/docs/user-guide/mcp-tools.html +6 -6
- package/public/docs/user-guide/run-comparison/how-stages-are-matched.html +5 -5
- package/public/docs/user-guide/run-comparison.html +6 -6
- package/public/docs/user-guide/understanding-findings.html +6 -6
- package/public/export-template.html +45 -45
- package/public/index.html +8 -7
- package/public/sample-runs/sample-run.ndjson.gz +0 -0
- package/vendor-core/allocation.js +25 -23
- package/vendor-core/analyzer.js +85 -58
- package/vendor-core/api-merge-writes.js +2 -0
- package/vendor-core/aqe-skew.js +347 -0
- package/vendor-core/cli/budgets.js +6 -4
- package/vendor-core/cli/collect-run-pair.js +89 -0
- package/vendor-core/cli/collect-run-worker.js +16 -0
- package/vendor-core/cli/collect-run.js +1 -2
- package/vendor-core/cli/native-zstd.js +12 -16
- package/vendor-core/comparability.js +234 -0
- package/vendor-core/comparison-output.js +15 -7
- package/vendor-core/comparison-verdict.js +105 -25
- package/vendor-core/core-source-hash.txt +1 -1
- package/vendor-core/core-time-series.js +0 -1
- package/vendor-core/core-usage-locality.js +1 -1
- package/vendor-core/detectors.js +1007 -380
- package/vendor-core/docs-config.js +0 -4
- package/vendor-core/docs-content/detection/cache.md +2 -1
- package/vendor-core/docs-content/detection/cfg.md +19 -11
- package/vendor-core/docs-content/detection/cold.md +2 -1
- package/vendor-core/docs-content/detection/gc.md +7 -3
- package/vendor-core/docs-content/detection/host.md +11 -1
- package/vendor-core/docs-content/detection/mem.md +17 -6
- package/vendor-core/docs-content/detection/part.md +3 -1
- package/vendor-core/docs-content/detection/plan.md +55 -13
- package/vendor-core/docs-content/detection/shfl.md +11 -5
- package/vendor-core/docs-content/detection/skew.md +47 -1
- package/vendor-core/docs-content/detection/slow.md +4 -2
- package/vendor-core/docs-content/detection/spec.md +6 -1
- package/vendor-core/docs-content/detection/spill.md +6 -3
- package/vendor-core/docs-content/detection/strag.md +19 -6
- package/vendor-core/docs-content/detection/tiny.md +9 -3
- package/vendor-core/effective-conf.js +7 -10
- package/vendor-core/efficiency-model.js +2 -2
- package/vendor-core/etl-phases.js +1 -2
- package/vendor-core/event-handlers.js +175 -57
- package/vendor-core/event-schemas.js +21 -16
- package/vendor-core/evidence-availability.js +9 -2
- package/vendor-core/evidence-report.js +118 -35
- package/vendor-core/executor-peaks.js +41 -0
- package/vendor-core/export-data.js +5 -5
- package/vendor-core/finding-identity.js +78 -0
- package/vendor-core/finding-presentation.js +116 -33
- package/vendor-core/finding-types.js +88 -21
- package/vendor-core/format-utils.js +14 -15
- package/vendor-core/html-export.js +1 -1
- package/vendor-core/impact-band.js +2 -2
- package/vendor-core/impact-format.js +47 -19
- package/vendor-core/impact-model.js +26 -15
- package/vendor-core/job-groups.js +4 -4
- package/vendor-core/mcp-server-factory.js +48 -12
- package/vendor-core/mcp-tools.js +179 -24
- package/vendor-core/median.js +2 -2
- package/vendor-core/nested-loop-join.js +73 -0
- package/vendor-core/occupancy.js +1 -2
- package/vendor-core/parser-worker.js +1 -1
- package/vendor-core/plan-graph-model.js +14 -22
- package/vendor-core/plan-node-detail.js +2 -3
- package/vendor-core/plan-summary.js +24 -19
- package/vendor-core/plan-tree-walk.js +6 -8
- package/vendor-core/python-stage.js +12 -1
- package/vendor-core/recommendation-rollup.js +13 -12
- package/vendor-core/redact.js +52 -46
- package/vendor-core/run-aggregates.js +6 -8
- package/vendor-core/run-comparison.js +226 -66
- package/vendor-core/run-identity.js +12 -0
- package/vendor-core/run-interpretation.js +21 -0
- package/vendor-core/run-metrics.js +2 -2
- package/vendor-core/run-output.js +32 -10
- package/vendor-core/run-totals.js +12 -0
- package/vendor-core/run-verdict.js +76 -3
- package/vendor-core/scaling-sim.js +3 -4
- package/vendor-core/snappy-block.js +2 -2
- package/vendor-core/spark-conf.js +168 -0
- package/vendor-core/sql-stages.js +2 -2
- package/vendor-core/stage-alignment.js +2 -12
- package/vendor-core/stage-identity.js +58 -3
- package/vendor-core/stage-label.js +14 -0
- package/vendor-core/stage-plan-nodes.js +17 -3
- package/vendor-core/stage-quantiles.js +141 -9
- package/vendor-core/stage-structure.js +17 -3
- package/vendor-core/threshold-overrides.js +9 -3
- package/vendor-core/types.js +58 -21
- package/vendor-core/wasted-core-hours.js +0 -1
- package/vendor-core/write-targets.js +114 -14
- package/vendor-core/zstd-worker-client.js +1 -1
- package/vendor-core/zstd-worker.js +1 -1
- package/public/assets/AutoscalingChurn-CRA2Mb7F.js +0 -1
- package/public/assets/CacheUtilization-Bh9OY_V9.js +0 -1
- package/public/assets/CachingOpportunity-oCiQwmTJ.js +0 -1
- package/public/assets/ColdStart-BJrtjfmn.js +0 -1
- package/public/assets/ConfigAudit-DMvKxySP.js +0 -1
- package/public/assets/CoreUsageArea-REC2zsKw.js +0 -1
- package/public/assets/Dashboard-BHZ76JCu.js +0 -2
- package/public/assets/DisclosureContext-OO7X1HAx.js +0 -1
- package/public/assets/DuplicatePlanSubtree-BgG-L-cK.js +0 -1
- package/public/assets/ExecutorUtilization-D2KhSVbY.js +0 -1
- package/public/assets/GcPressure-D1BTE8qh.js +0 -1
- package/public/assets/IncompleteRun-DD40xUpy.js +0 -1
- package/public/assets/JobFailures-YwNzCF19.js +0 -1
- package/public/assets/MemoryUtilization-9b8ee_3_.js +0 -1
- package/public/assets/OverBroadcast-CfctS8a8.js +0 -1
- package/public/assets/PartitionHint-CUvbnnxy.js +0 -1
- package/public/assets/PartitionSizing-VG8kBgG5.js +0 -1
- package/public/assets/PlanExplorer-DmubTAOP.js +0 -1
- package/public/assets/PlanGraphRoute-DctPZjS0.js +0 -1
- package/public/assets/RetryWaste-CnpM8bB7.js +0 -1
- package/public/assets/ShuffleIO-D13vGmas.js +0 -1
- package/public/assets/Skew-DlagstYP.js +0 -1
- package/public/assets/SlowHost-cSkLRZ_e.js +0 -1
- package/public/assets/SmallFiles-B-kERMcq.js +0 -1
- package/public/assets/SpeculationWaste-DaysAzXO.js +0 -1
- package/public/assets/Spill-H44Gz4US.js +0 -1
- package/public/assets/StageFailed-DCfii9h_.js +0 -1
- package/public/assets/StageFindingGroup-BXJ0Mj5n.js +0 -1
- package/public/assets/StageHeader--oN2J-oD.js +0 -1
- package/public/assets/StageShape-IZ80CZiJ.js +0 -1
- package/public/assets/StageSlowness--BRIaBc1.js +0 -1
- package/public/assets/Straggler-Ctq0Df_o.js +0 -1
- package/public/assets/TaskFailures-Bks_gqhL.js +0 -1
- package/public/assets/TinyTask-BssfzGFB.js +0 -1
- package/public/assets/UnderBroadcast-DsScrxc-.js +0 -1
- package/public/assets/charts-vendor-0VMaLVLN.js +0 -59
- package/public/assets/finding-anchor-BYW1oz5R.js +0 -1
- package/public/assets/impact-sort-xzy0g-Vh.js +0 -1
- package/public/assets/index-DhpRGMZc.css +0 -2
- package/public/assets/index-DwqkFUFk.js +0 -14
- package/public/assets/plan-graph-vendor-BYl-AzN5.js +0 -7
- package/public/assets/react-vendor-DfpuPQZf.js +0 -9
- package/public/assets/select-C8edjYTq.js +0 -1
- package/public/assets/usePagedRows-CsuUFeYx.js +0 -1
- package/public/assets/useRecentFiles-BvkKo3JN.js +0 -11
- package/public/assets/useSortMode-joX71BZN.js +0 -1
- package/public/docs/assets/chunks/@localSearchIndexroot.tE5pz54z.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.YQcj5EI4.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.YQcj5EI4.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets_plan-advisor.md.RlzvUmNm.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets_visual-system-and-templating.md.wulOueeB.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.N4hhenrA.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.yNex4bys.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract_plan-attribution.md.yNex4bys.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract_threshold-tables.md.Dp3c40rx.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_drill-down_plan-graph.md.DwOozIEs.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation.md.DfvbqEUu.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_caveats-tuning-and-coverage.md.Cwm1jHmn.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.DdCGtAGu.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_impact-estimation_stage-union-rollup.md.DdCGtAGu.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_overview.md.C1sSvm9i.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history_run-comparison-internals.md.CZA0JLtV.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.BOZ1azXG.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.BQXycK6G.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering_findings-tab.md.BQXycK6G.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol.md.BAnhi2-d.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_cli-and-mcp.md.BX1XnFbq.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_worker-protocol_evidence-report.md.CiQl1MLb.js +0 -1
- package/public/docs/assets/contributor-guide_contributing.md.CQMvGwFt.js +0 -1
- package/public/docs/assets/contributor-guide_development-setup.md.DQdzera7.js +0 -15
- package/public/docs/assets/contributor-guide_development-setup.md.DQdzera7.lean.js +0 -1
- package/public/docs/assets/contributor-guide_testing.md.By6XGR9a.js +0 -1
- package/public/docs/assets/user-guide_getting-started_ci-and-automation.md.BEepbDDL.js +0 -24
- package/public/docs/assets/user-guide_getting-started_reading-the-dashboard.md.Obf3W3__.js +0 -1
- package/public/docs/assets/user-guide_mcp-tools_compare-runs.md.Cc_gLoix.lean.js +0 -1
- package/public/docs/assets/user-guide_mcp-tools_diagnose-run.md.BP1vnHA5.js +0 -23
- package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.js +0 -1
- package/public/docs/assets/user-guide_run-comparison.md.BUALkohi.lean.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.3C7KCEZO.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.3C7KCEZO.lean.js +0 -1
- /package/public/docs/assets/{contributor-guide_architecture_board-widgets_caching-and-memory.md.CQgn1t_M.lean.js → contributor-guide_architecture_board-widgets_caching-and-memory.md.BYDo3ClR.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_board-widgets_plan-advisor.md.RlzvUmNm.lean.js → contributor-guide_architecture_board-widgets_plan-advisor.md.ajUAVdbc.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_overview.md.C1sSvm9i.lean.js → contributor-guide_architecture_overview.md.nxkpOhgf.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_widget-rendering.md.BOZ1azXG.lean.js → contributor-guide_architecture_widget-rendering.md.BrSz8Ezh.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_widget-rendering_list-sort-mode.md.BuHKgH0C.lean.js → contributor-guide_architecture_widget-rendering_list-sort-mode.md.37hcZJ7q.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_widget-rendering_row-expand-contract.md.ZT89u9f1.lean.js → contributor-guide_architecture_widget-rendering_row-expand-contract.md.mK_VmAWk.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DSVFPpWb.lean.js → contributor-guide_architecture_worker-protocol_core-and-event-validation.md.DVSXn-bb.lean.js} +0 -0
- /package/public/docs/assets/{contributor-guide_contributing.md.CQMvGwFt.lean.js → contributor-guide_contributing.md.DBW4drtZ.lean.js} +0 -0
- /package/public/docs/assets/{user-guide_getting-started_reading-the-dashboard.md.Obf3W3__.lean.js → user-guide_getting-started_reading-the-dashboard.md.CGaxPX_1.lean.js} +0 -0
- /package/public/docs/assets/{user-guide_mcp-tools.md.C65SjWUL.lean.js → user-guide_mcp-tools.md.49r3L2YE.lean.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./react-vendor-C6KcUD36.js";import{t}from"./button-DbpTz2yk.js";var n=e();function r({page:e,totalPages:r,onPrev:i,onNext:a,renderJumpControl:o}){return r<=1?null:(0,n.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs ${o?`justify-between`:`justify-end`}`,children:[o?.(),(0,n.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,n.jsx)(t,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:i,disabled:e===0,children:`Previous`}),(0,n.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Page `,e+1,` of `,r]}),(0,n.jsx)(t,{type:`button`,variant:`ghost`,size:`sm`,className:`tap-target-comfortable tap-target-comfortable--sm`,onClick:a,disabled:e===r-1,children:`Next`})]})]})}export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";var r=e(t(),1),i=n(),a={executorMetrics:`Executor metrics`,rddStorageSnapshots:`RDD storage snapshots`,sqlPlan:`SQL plan`,sparkConfiguration:`Spark configuration`,taskCoreTime:`Task and core time`,infrastructureContext:`Infrastructure context`,sourceContext:`Source context`,costContext:`Cost context`};function o(e){return a[e]}var s={revealRequest:0,evidenceCardOpen:!0,setEvidenceCardOpen:()=>{},revealEvidence:()=>{},registerRow:()=>{}},c=(0,r.createContext)(null);function l({children:e}){let[t,n]=(0,r.useState)(!1),a=(0,r.useRef)(null),[o,s]=(0,r.useState)(0),l=(0,r.useRef)(new Map),u=(0,r.useCallback)((e,t)=>{t?l.current.set(e,t):l.current.delete(e)},[]),d=(0,r.useCallback)(e=>{a.current=e,n(!0),s(e=>e+1)},[]);(0,r.useLayoutEffect)(()=>{let e=a.current;e&&o!==0&&queueMicrotask(()=>{l.current.get(e)?.focus()})},[o]);let f=(0,r.useMemo)(()=>({revealRequest:o,evidenceCardOpen:t,setEvidenceCardOpen:n,revealEvidence:d,registerRow:u}),[o,t,d,u]);return(0,i.jsx)(c.Provider,{value:f,children:e})}function u(){return(0,r.useContext)(c)??s}function d(){let{revealEvidence:e}=u();return{revealEvidence:e}}function f(){let{revealRequest:e,evidenceCardOpen:t,setEvidenceCardOpen:n}=u();return{revealRequest:e,evidenceCardOpen:t,setEvidenceCardOpen:n}}function p(){let{registerRow:e}=u();return e}function m(e){let t=(0,r.useId)(),[n,a]=(0,r.useState)(!1);return e?{tooltipProps:{title:e,"aria-describedby":t,onFocus:()=>a(!0),onBlur:()=>a(!1)},srOnlyTooltip:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{id:t,className:`sr-only`,children:e}),n?(0,i.jsx)(`span`,{"aria-hidden":`true`,"data-testid":`visible-tooltip`,className:`pointer-events-none absolute top-full left-0 z-50 mt-1 max-w-xs rounded-md border border-border bg-foreground px-2 py-1 text-xs font-normal whitespace-normal text-background shadow-md`,children:e}):null]})}:{tooltipProps:{},srOnlyTooltip:null}}function h({confidence:e,validationRequired:t,evidenceKey:n}){let{tooltipProps:r,srOnlyTooltip:a}=m(t),{revealEvidence:s}=d(),c=!!e&&e!==`high`,l=!!n;return!c&&!l?null:(0,i.jsxs)(`span`,{className:`relative inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-sm border border-border bg-muted/60 px-2 text-xs font-medium text-muted-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,tabIndex:c?0:void 0,...c?r:{},children:[c?(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block size-2 shrink-0 rounded-full border border-dashed border-current`}):null,c?`${e} confidence`:null,c?a:null,c&&l?(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`opacity-60`,children:`·`}):null,l?(0,i.jsx)(`button`,{type:`button`,"aria-label":`Evidence: ${o(n)}`,className:`tap-target-comfortable tap-target-comfortable--sm inline-flex min-h-[22px] cursor-pointer items-center rounded-sm text-primary outline-none hover:underline underline-offset-2 focus-visible:ring-2 focus-visible:ring-ring/50`,onClick:()=>s(n),children:o(n)}):null]})}export{f as a,o as i,m as n,p as o,l as r,h as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ft as r,Ot as i,Wt as a,Xt as o,c as s,qt as c,sn as l}from"./DisclosureContext-DK1_iz6J.js";import{n as u}from"./PlanView-B1hxzFRs.js";import{a as d,i as f,n as p,r as m,t as h}from"./select-BHqOqun5.js";import{P as g,k as _}from"./index-fDiwfuoO.js";import{n as v,t as y}from"./WidgetLeadSummary-CXFZP00C.js";import{n as b}from"./StagePill--P7PDd3s.js";import{t as x}from"./RowPagination-C-LzWkI5.js";import{t as S}from"./ImpactEstimate-Dm3xWbzV.js";import{r as C}from"./impact-sort-mC5ISgX8.js";import{n as w,t as T}from"./finding-anchor-Dr40LkS9.js";import{t as E}from"./usePagedRows-BafD6bEN.js";import{n as D,t as O}from"./useSortMode-DjrAN-z4.js";import{t as k}from"./StageHeader-CIETkjVZ.js";import{t as A}from"./PlanExplorer-DdiQRcJU.js";import{t as j}from"./PartitionHint-BL2EmJfE.js";var M=e(t(),1),N=n();function P({entry:e,appModel:t}){let n=l(),i=w([e.shuffle]),o=t.stages.get(e.stageId),s=o?c(o):null,d=n===`advanced`&&u(e.stageId,t);return(0,N.jsxs)(`div`,{ref:i.ref,tabIndex:i.tabIndex,"data-flashed":i.dataFlashed,className:`space-y-2 ${T} transition-colors ${i.flashClassName}`,children:[(0,N.jsx)(k,{stageId:e.stageId,appModel:t}),(0,N.jsxs)(`p`,{className:`text-sm`,children:[`Shuffle read: `,(0,N.jsx)(`strong`,{children:r(a(e.shuffle))}),` · `,`Write: `,r(o?.shuffleWriteBytes??0)]}),(0,N.jsx)(S,{finding:e.shuffle}),s||d?(0,N.jsxs)(`div`,{className:`space-y-2 pt-1`,children:[s?(0,N.jsx)(j,{hint:s}):null,d?(0,N.jsx)(A,{stageId:e.stageId,appModel:t}):null]}):null]})}var F=(0,M.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let[c,l]=(0,M.useState)(0),[u,S]=(0,M.useState)(!n),{sortMode:w,setSortMode:T,orderBy:k}=O(),A=g(),{shuffleFindings:j,sorted:F,orderedEntries:I}=(0,M.useMemo)(()=>{let e=t.filter(e=>e.type===`shuffle`),n=[...e.filter(e=>e.stageId!=null).map(e=>({stageId:e.stageId,shuffle:e,impactBand:e.impactBand,peak:a(e)}))].sort((e,t)=>i[e.impactBand]-i[t.impactBand]||t.peak-e.peak);return{shuffleFindings:e,sorted:n,orderedEntries:k(n,e=>[e.shuffle],e=>e.stageId)}},[t,w]),L=A?I.findIndex(e=>e.shuffle===A.finding):null,{totalPages:R,effectivePage:z,visible:B}=E(I,c,l,L);if(j.length===0){let t=0;for(let n of e.stages.values())t=Math.max(t,n.shuffleReadBytes??0);return(0,N.jsx)(_,{title:`Shuffle I/O`,open:u,onOpenChange:S,summary:(0,N.jsx)(y,{value:r(t),context:`no issue detected: peak shuffle read`}),children:(0,N.jsx)(`div`,{className:`flex flex-col gap-1`,children:(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No shuffle read/write issues detected.`})})})}let V=o(j),H=I.map(e=>({id:e.stageId})),U=C(j,F.length,u);return(0,N.jsx)(_,{title:`Shuffle I/O`,impactBand:V,fixFor:j,open:u,onOpenChange:S,summary:(0,N.jsx)(y,{value:r(F[0].peak),context:`Peak shuffle read · ${v(F.length)}`}),badges:(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(s,{type:`shuffle`,impactBand:V??`info`}),U?(0,N.jsx)(D,{mode:w,onChange:e=>{T(e),l(0)}}):null]}),children:(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsx)(b,{pills:H}),B.map(t=>(0,N.jsx)(P,{entry:t,appModel:e},t.stageId)),(0,N.jsx)(x,{page:z,totalPages:R,onPrev:()=>l(e=>e-1),onNext:()=>l(e=>e+1),renderJumpControl:()=>(0,N.jsxs)(h,{value:String(z*6),onValueChange:e=>l(Math.floor(Number(e)/6)),children:[(0,N.jsx)(f,{size:`sm`,"aria-label":`Jump to stage`,children:(0,N.jsx)(d,{placeholder:`Jump to stage`})}),(0,N.jsx)(p,{children:I.map((e,t)=>(0,N.jsxs)(m,{value:String(t),children:[`Stage `,e.stageId,` (`,r(e.peak),`)`]},e.stageId))})]})})]})})});export{F as ShuffleIO};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Wt as r,zt as i}from"./DisclosureContext-DK1_iz6J.js";import{t as a}from"./StageFindingGroup-BgYLyj5q.js";var o=e(t(),1),s=n();function c(e){let t=e.type===`skew`?e.dataRatio:void 0;return`${e.metric}: ${i(`ratio`,r(e))}${t==null?``:`, data ${i(`ratio`,t)}`}`}var l=(0,o.memo)(function(e){return(0,s.jsx)(a,{...e,type:`skew`,title:`Task Skew`,idPrefix:`skew`,findingLabel:c})});export{l as Skew};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Wt as i,c as a,s as o,wt as s,zt as c}from"./DisclosureContext-DK1_iz6J.js";import{P as l,k as u}from"./index-fDiwfuoO.js";import{n as d,t as f}from"./WidgetLeadSummary-CXFZP00C.js";import{n as p}from"./findings-of-type-BL2u3RGZ.js";import{t as m}from"./RowPagination-C-LzWkI5.js";import{t as h}from"./ImpactEstimate-Dm3xWbzV.js";import{r as g}from"./impact-sort-mC5ISgX8.js";import{n as _}from"./finding-anchor-Dr40LkS9.js";import{t as v}from"./usePagedRows-BafD6bEN.js";import{n as y,t as b}from"./useSortMode-DjrAN-z4.js";import{t as x}from"./StageHeader-CIETkjVZ.js";var S=e(t(),1),C=n();function w(e){let t=i(e);if(e.metric===`execMaxMedianRatio`)return`Executor ${e.executorId}: ${c(`ratio`,t)} the median ${e.dimension?s[e.dimension]:`value`}`;let n=Math.round((e.hostTaskShare??0)*100);return e.metric===`hostDurationShare`?`${e.host}: ${c(`pctFraction`,t)} of this stage's task time (${c(`pct`,n)} of tasks)`:`${e.host}: ${c(`ratio`,t)} median task time (${c(`pct`,n)} of tasks)`}function T({finding:e,appModel:t}){let n=_([e]);return(0,C.jsxs)(`li`,{ref:n.ref,tabIndex:n.tabIndex,"data-flashed":n.dataFlashed,className:`space-y-1 text-sm transition-colors ${n.flashClassName}`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(o,{impactBand:e.impactBand}),e.stageId==null?null:(0,C.jsx)(x,{stageId:e.stageId,appModel:t})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:w(e)}),(0,C.jsx)(h,{finding:e})]})}var E=(0,S.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let{sortMode:i,setSortMode:o,orderBy:s}=b(),[c,h]=(0,S.useState)(!n),[_,x]=(0,S.useState)(0),E=p(t,`slowHost`).slice().sort((e,t)=>r[e.impactBand]-r[t.impactBand]),D=s(E,e=>[e],e=>e.stageId??null),O=l(),k=O?D.findIndex(e=>e===O.finding):null,{totalPages:A,effectivePage:j,visible:M}=v(D,_,x,k);return E.length===0?null:(0,C.jsxs)(u,{title:`Slow Executor Host`,impactBand:E[0].impactBand,fixFor:E,badges:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(a,{type:`slowHost`,impactBand:E[0].impactBand}),g(E,E.length,c)?(0,C.jsx)(y,{mode:i,onChange:o}):null]}),open:c,onOpenChange:h,summary:(0,C.jsx)(f,{value:w(E[0]),context:d(E.length)}),children:[(0,C.jsx)(`ul`,{className:`space-y-2`,children:M.map(t=>(0,C.jsx)(T,{finding:t,appModel:e},t.id))}),(0,C.jsx)(m,{page:j,totalPages:A,onPrev:()=>x(e=>e-1),onNext:()=>x(e=>e+1)})]})});export{E as SlowHost};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Xt as i,c as a,u as o}from"./DisclosureContext-DK1_iz6J.js";import{P as s,S as c,k as l,l as u}from"./index-fDiwfuoO.js";import{t as d}from"./RowStatusCluster-Dbtmte7l.js";import{n as f,t as p}from"./WidgetLeadSummary-CXFZP00C.js";import{n as m}from"./findings-of-type-BL2u3RGZ.js";import{n as h}from"./StagePill--P7PDd3s.js";import{t as g}from"./RowPagination-C-LzWkI5.js";import{t as _}from"./ImpactEstimate-Dm3xWbzV.js";import{i as v,r as y}from"./impact-sort-mC5ISgX8.js";import{n as b,t as x}from"./finding-anchor-Dr40LkS9.js";import{t as S}from"./usePagedRows-BafD6bEN.js";import{n as C,t as w}from"./useSortMode-DjrAN-z4.js";var T=e(t(),1),E=n();function D({finding:e}){let t=b([e]);return(0,E.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-2 ${x} transition-colors ${t.flashClassName}`,children:[e.stageIds.length>0?(0,E.jsx)(h,{pills:e.stageIds.map(e=>({id:e}))}):null,(0,E.jsxs)(`p`,{children:[u(e.recommendation??``).measured??e.recommendation,` `,(0,E.jsx)(_,{finding:e})]})]})}var O=(0,T.memo)(function({catalog:e,defaultCollapsed:t=!0}){let{sortMode:n,setSortMode:u,orderBy:h}=w(),[_,b]=(0,T.useState)(!t),[x,O]=(0,T.useState)(0),{findings:k,pills:A}=(0,T.useMemo)(()=>{let t=m(e,`smallFiles`).sort((e,t)=>r[e.impactBand]-r[t.impactBand]);return{findings:t,pills:[...new Set(t.flatMap(e=>e.stageIds))].map(e=>({id:e}))}},[e,n]),j=h(k,e=>[e],v),M=s(),N=M?j.findIndex(e=>e===M.finding):null,{totalPages:P,effectivePage:F,visible:I}=S(j,x,O,N);return k.length===0?null:(0,E.jsxs)(l,{title:`Excessive Small Files`,fixFor:k,impactBand:i(k),open:_,onOpenChange:b,badges:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(a,{type:`smallFiles`,impactBand:i(k)??`info`,className:c}),y(k,k.length,_)?(0,E.jsx)(C,{mode:n,onChange:u}):null]}),statusBadge:(0,E.jsx)(o,{children:(0,E.jsx)(d,{confidence:k[0].confidence,validationRequired:k[0].validationRequired,evidenceKey:`sqlPlan`})}),summary:(0,E.jsx)(p,{value:`${A.length} stage${A.length===1?``:`s`}`,context:f(k.length)}),children:[(0,E.jsx)(`ul`,{className:`space-y-3 text-sm`,children:I.map(e=>(0,E.jsx)(D,{finding:e},e.id))}),(0,E.jsx)(g,{page:F,totalPages:P,onPrev:()=>O(e=>e-1),onNext:()=>O(e=>e+1)})]})});export{O as SmallFiles};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Lt as r,Ot as i,Wt as a,c as o,s}from"./DisclosureContext-DK1_iz6J.js";import{P as c,k as l}from"./index-fDiwfuoO.js";import{n as u,t as d}from"./WidgetLeadSummary-CXFZP00C.js";import{t as f}from"./RowPagination-C-LzWkI5.js";import{t as p}from"./ImpactEstimate-Dm3xWbzV.js";import{r as m}from"./impact-sort-mC5ISgX8.js";import{n as h}from"./finding-anchor-Dr40LkS9.js";import{t as g}from"./usePagedRows-BafD6bEN.js";import{n as _,t as v}from"./useSortMode-DjrAN-z4.js";import{t as y}from"./StageHeader-CIETkjVZ.js";var b=e(t(),1),x=n();function S(e){return r(a(e))}function C({finding:e,appModel:t}){let n=h([e]);return(0,x.jsxs)(`li`,{ref:n.ref,tabIndex:n.tabIndex,"data-flashed":n.dataFlashed,className:`space-y-1 text-sm transition-colors ${n.flashClassName}`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsx)(s,{impactBand:e.impactBand}),e.stageId==null?null:(0,x.jsx)(y,{stageId:e.stageId,appModel:t}),(0,x.jsx)(`strong`,{children:S(e)})]}),(0,x.jsx)(p,{finding:e})]})}var w=(0,b.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let{sortMode:r,setSortMode:a,orderBy:s}=v(),[p,h]=(0,b.useState)(!n),[y,w]=(0,b.useState)(0),T=t.filter(e=>e.type===`speculationWaste`).slice().sort((e,t)=>i[e.impactBand]-i[t.impactBand]),E=s(T,e=>[e],e=>e.stageId??null),D=c(),O=D?E.findIndex(e=>e===D.finding):null,{totalPages:k,effectivePage:A,visible:j}=g(E,y,w,O);return T.length===0?null:(0,x.jsxs)(l,{title:`Speculation Waste`,fixFor:T,impactBand:T[0].impactBand,badges:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(o,{type:`speculationWaste`,impactBand:T[0].impactBand}),m(T,T.length,p)?(0,x.jsx)(_,{mode:r,onChange:a}):null]}),open:p,onOpenChange:h,summary:(0,x.jsx)(d,{value:S(T[0]),context:u(T.length)}),children:[(0,x.jsx)(`ul`,{className:`space-y-2`,children:j.map(t=>(0,x.jsx)(C,{finding:t,appModel:e},t.id))}),(0,x.jsx)(f,{page:A,totalPages:k,onPrev:()=>w(e=>e-1),onNext:()=>w(e=>e+1)})]})});export{w as SpeculationWaste};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{At as r,C as i,Ft as a,Ot as o,Wt as s,c,jt as l,qt as u,r as d,s as f,sn as p,u as m}from"./DisclosureContext-DK1_iz6J.js";import{a as h,c as g,n as _,o as v,s as y}from"./PlanView-B1hxzFRs.js";import{_ as b,c as x,d as ee,f as S,l as C,o as w,r as T,s as E,t as D,v as O}from"./charts-vendor-CtTxwTeu.js";import{P as k,k as A,xt as j}from"./index-fDiwfuoO.js";import{t as M}from"./EmptyState-C1uL40VU.js";import{t as N}from"./RowStatusCluster-Dbtmte7l.js";import{i as P,t as F}from"./ChartTheme-DAiARbLP.js";import{t as I}from"./downsample-WmNM1qc9.js";import{t as L}from"./WidgetLeadSummary-CXFZP00C.js";import{t as R}from"./StagePill--P7PDd3s.js";import{t as z}from"./RowPagination-C-LzWkI5.js";import{t as B}from"./ImpactEstimate-Dm3xWbzV.js";import{r as V}from"./impact-sort-mC5ISgX8.js";import{n as H,t as U}from"./finding-anchor-Dr40LkS9.js";import{t as W}from"./usePagedRows-BafD6bEN.js";import{n as G,t as K}from"./useSortMode-DjrAN-z4.js";import{t as q}from"./PlanExplorer-DdiQRcJU.js";import{t as J}from"./PartitionHint-BL2EmJfE.js";var Y=e(t(),1),X=n(),Z=240,Q=524288e3,te=10;function $(e){let t=e.spillBytes>Q,n=e.gcPct>te;return t&&n?`critical`:t||n?`warning`:`info`}function ne(e){return F[$(e)]}function re({active:e,payload:t}){if(!e||!t?.length)return null;let n=t[0]?.payload;if(!n)return null;let r=$(n);return(0,X.jsxs)(`div`,{className:`rounded-md border border-border bg-popover px-2 py-1.5 text-xs text-popover-foreground shadow-md`,children:[(0,X.jsxs)(`p`,{children:[a(n.spillBytes),` spilled`]}),(0,X.jsxs)(`p`,{children:[n.gcPct.toFixed(1),`% GC`]}),(0,X.jsxs)(`p`,{className:`mt-1 flex items-center gap-1.5 font-medium`,children:[(0,X.jsx)(f,{impactBand:r}),r.toUpperCase()]})]})}function ie({appModel:e}){let t=[];for(let n of e.stages.values()){let e=n.memoryBytesSpilled??0;e<=0||t.push({stageId:n.id,spillBytes:e,gcPct:n.gcPct??0,submittedAt:n.submittedAt??0})}if(t.length===0)return(0,X.jsx)(M,{tone:`clean`,icon:j,title:`No stages spilled memory in this run.`});let n=I(t),r=[...n].sort((e,t)=>e.submittedAt-t.submittedAt).map(e=>({stage:`S${e.stageId}`,spillMB:e.spillBytes/1048576,gcPct:e.gcPct}));return(0,X.jsxs)(h,{defaultValue:`scatter`,children:[(0,X.jsxs)(y,{"aria-label":`Memory pressure view`,children:[(0,X.jsx)(g,{value:`scatter`,children:`Scatter`}),(0,X.jsx)(g,{value:`twin`,children:`Twin bars`})]}),(0,X.jsxs)(`p`,{className:`text-muted-foreground text-xs`,children:[`Spill and GC pressure both stem from tight executor memory, see`,` `,(0,X.jsx)(i,{anchor:`#memory-model`,children:`how Spark’s memory model works`}),`.`]}),(0,X.jsxs)(v,{value:`scatter`,children:[(0,X.jsxs)(`div`,{className:`mb-1 flex items-center gap-3 text-xs text-muted-foreground`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(f,{impactBand:`critical`}),`CRITICAL`]}),(0,X.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(f,{impactBand:`warning`}),`WARNING`]}),(0,X.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(f,{impactBand:`info`}),`INFO`]})]}),(0,X.jsx)(P,{ariaLabel:`Memory pressure scatter: spilled memory versus GC percent, one point per stage that spilled.`,height:Z,table:{caption:`Memory spilled and GC percent by stage`,columns:[`Stage`,`Memory spilled`,`GC %`],rows:n.map(e=>[`S${e.stageId}`,a(e.spillBytes),`${e.gcPct.toFixed(1)}%`]),align:[`left`,`right`,`right`]},children:(0,X.jsxs)(T,{children:[(0,X.jsx)(S,{stroke:F.muted,strokeOpacity:.2}),(0,X.jsx)(E,{type:`number`,dataKey:`spillBytes`,name:`Memory spilled`,tickFormatter:e=>a(e),tick:{fontSize:10}}),(0,X.jsx)(w,{type:`number`,dataKey:`gcPct`,name:`GC %`,tick:{fontSize:10},width:32}),(0,X.jsx)(O,{cursor:{strokeDasharray:`3 3`},content:re}),(0,X.jsx)(x,{data:n,name:`Spill vs. GC`,children:n.map(e=>(0,X.jsx)(b,{fill:ne(e)},e.stageId))})]})})]}),(0,X.jsx)(v,{value:`twin`,children:(0,X.jsx)(P,{ariaLabel:`Memory pressure by stage: spilled memory and GC percent across stages in submission order.`,height:Z,table:{caption:`Spilled memory and GC percent by stage, submission order`,columns:[`Stage`,`Spill (MB)`,`GC %`],rows:r.map(e=>[e.stage,e.spillMB.toFixed(1),`${e.gcPct.toFixed(1)}%`]),align:[`left`,`right`,`right`]},children:(0,X.jsxs)(D,{data:r,children:[(0,X.jsx)(S,{stroke:F.muted,strokeOpacity:.2}),(0,X.jsx)(E,{dataKey:`stage`,tick:{fontSize:12}}),(0,X.jsx)(w,{yAxisId:`left`,tick:{fontSize:10},width:36}),(0,X.jsx)(w,{yAxisId:`right`,orientation:`right`,tick:{fontSize:10},width:36}),(0,X.jsx)(O,{}),(0,X.jsx)(C,{yAxisId:`left`,dataKey:`spillMB`,name:`Spill (MB)`,fill:F.critical}),(0,X.jsx)(ee,{yAxisId:`right`,dataKey:`gcPct`,name:`GC %`,stroke:F.info,dot:!1})]})})})]})}function ae(e,t){return e.stages.get(t)?.spillClassification??`unclassified`}function oe({finding:e,appModel:t}){let n=H([e]),i=p(),o=t.stages.get(e.stageId),c=ae(t,e.stageId),h=c===`volume`&&o?u(o):null,g=i===`advanced`&&_(e.stageId,t);return(0,X.jsxs)(`div`,{ref:n.ref,tabIndex:n.tabIndex,"data-flashed":n.dataFlashed,className:`space-y-2 ${U} transition-colors ${n.flashClassName}`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(f,{impactBand:e.impactBand}),(0,X.jsx)(d,{label:r[c],impactBand:e.impactBand,title:l[c]}),(0,X.jsx)(R,{stageId:e.stageId})]}),(0,X.jsx)(m,{children:(0,X.jsx)(N,{confidence:e.confidence,validationRequired:e.validationRequired})})]}),(0,X.jsxs)(`p`,{className:`text-sm`,children:[`Memory spilled: `,(0,X.jsx)(`strong`,{children:a(s(e))}),` · `,`Disk: `,a(o?.diskBytesSpilled??0)]}),(0,X.jsx)(B,{finding:e}),h?(0,X.jsx)(J,{hint:h}):null,g?(0,X.jsx)(`div`,{className:`pt-1`,children:(0,X.jsx)(q,{stageId:e.stageId,appModel:t})}):null]})}var se=(0,Y.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let{sortMode:r,setSortMode:i,orderBy:s}=K(),[l,u]=(0,Y.useState)(!n),[d,f]=(0,Y.useState)(0),{findings:p,sorted:m,orderedFindings:h}=(0,Y.useMemo)(()=>{let e=t.filter(e=>e.type===`spill`&&e.stageId!=null),n=[...e].sort((e,t)=>(o[e.impactBand]??9)-(o[t.impactBand]??9)||(typeof t.value==`number`?t.value:0)-(typeof e.value==`number`?e.value:0));return{findings:e,sorted:n,orderedFindings:s(n,e=>[e],e=>e.stageId)}},[t,r]),g=k(),_=g?h.findIndex(e=>e===g.finding):null,{totalPages:v,effectivePage:y,visible:b}=W(h,d,f,_);if(p.length===0){let t=0;for(let n of e.stages.values())t=Math.max(t,n.memoryBytesSpilled??0);return(0,X.jsx)(A,{title:`Spill: no issue detected (max ${a(t)} spilled)`,children:(0,X.jsx)(M,{tone:`clean`,icon:j,title:`No stages spilled memory in this run.`})})}let x=m[0].impactBand;return(0,X.jsx)(A,{title:`Spill`,fixFor:m,impactBand:x,badges:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(c,{type:`spill`,impactBand:x}),V(p,m.length,l)?(0,X.jsx)(G,{mode:r,onChange:i}):null]}),open:l,onOpenChange:u,summary:(0,X.jsx)(L,{value:a(typeof m[0].value==`number`?m[0].value:0),context:`peak · ${m.length} stage${m.length===1?``:`s`}`}),children:(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsx)(ie,{appModel:e}),b.map(t=>(0,X.jsx)(oe,{finding:t,appModel:e},t.stageId)),(0,X.jsx)(z,{page:y,totalPages:v,onPrev:()=>f(e=>e-1),onNext:()=>f(e=>e+1)})]})})});export{se as Spill};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Xt as i,c as a,s as o}from"./DisclosureContext-DK1_iz6J.js";import{P as s,k as c}from"./index-fDiwfuoO.js";import{t as l}from"./WidgetLeadSummary-CXFZP00C.js";import{n as u}from"./findings-of-type-BL2u3RGZ.js";import{t as d}from"./StagePill--P7PDd3s.js";import{t as f}from"./RowPagination-C-LzWkI5.js";import{t as p}from"./ImpactEstimate-Dm3xWbzV.js";import{r as m}from"./impact-sort-mC5ISgX8.js";import{n as h}from"./finding-anchor-Dr40LkS9.js";import{t as g}from"./usePagedRows-BafD6bEN.js";import{n as _,t as v}from"./useSortMode-DjrAN-z4.js";var y=e(t(),1),b=n();function x(e){return e.stageId!=null}function S({finding:e}){let t=h([e]);return(0,b.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`flex flex-col gap-1 transition-colors ${t.flashClassName}`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(d,{stageId:e.stageId}),(0,b.jsx)(o,{impactBand:e.impactBand})]}),(0,b.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Stage attempt failed outright. Reason: `,(0,b.jsx)(`strong`,{children:e.valueText})]}),(0,b.jsx)(p,{finding:e})]})}function C({appModel:e,catalog:t,defaultCollapsed:n=!0}){let[o,d]=(0,y.useState)(0),{sortMode:p,setSortMode:h,orderBy:C}=v(),[w,T]=(0,y.useState)(!n),E=s(),D=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!D.current){D.current=!0;return}d(0)},[e]);let O=u(t,`stageFailed`).filter(x),k=C([...O].sort((e,t)=>r[e.impactBand]-r[t.impactBand]||e.stageId-t.stageId),e=>[e],e=>e.stageId),A=E?k.findIndex(e=>e===E.finding):null,{totalPages:j,effectivePage:M,visible:N}=g(k,o,d,A);return O.length===0?null:(0,b.jsxs)(c,{title:`Failed Stages`,fixFor:O,impactBand:i(O),badges:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a,{type:`stageFailed`,impactBand:i(O)}),m(O,O.length,w)?(0,b.jsx)(_,{mode:p,onChange:e=>{h(e),d(0)}}):null]}),open:w,onOpenChange:T,summary:(0,b.jsx)(l,{value:O.length,context:`stage${O.length===1?``:`s`} failed outright`}),children:[(0,b.jsx)(`ul`,{className:`space-y-3`,children:N.map(e=>(0,b.jsx)(S,{finding:e},e.id))}),(0,b.jsx)(f,{page:M,totalPages:j,onPrev:()=>d(e=>e-1),onNext:()=>d(e=>e+1)})]})}export{C as StageFailed};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Lt as r,Ot as i,Xt as a,c as o,nn as s,rn as c,s as l,sn as u,u as d}from"./DisclosureContext-DK1_iz6J.js";import{n as f}from"./PlanView-B1hxzFRs.js";import{P as p,k as m}from"./index-fDiwfuoO.js";import{t as h}from"./RowStatusCluster-Dbtmte7l.js";import{n as g,t as _}from"./DurationHistogram-B6jsE0Ov.js";import{n as v,t as y}from"./WidgetLeadSummary-CXFZP00C.js";import{n as b}from"./findings-of-type-BL2u3RGZ.js";import{t as x}from"./RowPagination-C-LzWkI5.js";import{t as S}from"./ImpactEstimate-Dm3xWbzV.js";import{r as C}from"./impact-sort-mC5ISgX8.js";import{n as w,t as T}from"./finding-anchor-Dr40LkS9.js";import{t as E}from"./usePagedRows-BafD6bEN.js";import{n as D,t as O}from"./useSortMode-DjrAN-z4.js";import{t as k}from"./StageHeader-CIETkjVZ.js";import{t as A}from"./PlanExplorer-DdiQRcJU.js";var j=e(t(),1),M=n();function N({expanded:e,onClick:t,label:n,location:r,controlsId:i}){let a=r?` for ${r}`:``;return(0,M.jsxs)(`button`,{type:`button`,"aria-expanded":e,"aria-controls":i,"aria-label":`${e?`Hide`:`Show`} ${n.toLowerCase()}${a}`,onClick:t,className:`tap-target-comfortable tap-target-comfortable--sm flex w-fit cursor-pointer items-center gap-1 text-xs font-medium text-primary underline underline-offset-2`,children:[n,e?(0,M.jsx)(s,{"aria-hidden":`true`,className:`size-3.5 shrink-0`}):(0,M.jsx)(c,{"aria-hidden":`true`,className:`size-3.5 shrink-0`})]})}function P(e){let[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(null),[a,o]=(0,j.useState)(!1),[s,c]=(0,j.useState)(!1),[l,u]=(0,j.useState)(!1);return{expanded:t,data:r,loading:a,error:s,toggle:()=>{let r=!t;n(r),r&&e&&!l&&!a&&(o(!0),e().then(e=>i(e)).catch(()=>c(!0)).finally(()=>{u(!0),o(!1)}))}}}function F({group:e,appModel:t,getTaskData:n,idPrefix:i,findingLabel:a}){let{exportMode:o,getTaskData:s}=g(n),{expanded:c,data:p,error:m,toggle:v}=P(s?()=>s(e.stageId):void 0),y=w(e.findings),b=t.stages.get(e.stageId),x=u()===`advanced`&&f(e.stageId,t),C=`${i}-stage-${e.stageId}-detail`;return(0,M.jsxs)(`div`,{ref:y.ref,tabIndex:y.tabIndex,"data-flashed":y.dataFlashed,className:`space-y-2 ${T} transition-colors ${y.flashClassName}`,children:[(0,M.jsx)(k,{stageId:e.stageId,appModel:t}),(0,M.jsx)(`ul`,{className:`flex flex-col gap-1.5`,children:e.findings.map((e,t)=>(0,M.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,M.jsx)(l,{impactBand:e.impactBand}),(0,M.jsx)(`span`,{children:a(e)}),(0,M.jsx)(S,{finding:e}),(0,M.jsx)(d,{children:(0,M.jsx)(h,{confidence:e.confidence,validationRequired:e.validationRequired})})]},t))}),b?.taskDurationP50==null?null:(0,M.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`P50 `,r(b.taskDurationP50),` · P95 `,r(b.taskDurationP95),` · Max`,` `,r(b.taskDurationMax)]}),e.slowHost?(0,M.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,M.jsx)(l,{impactBand:e.slowHost.impactBand,className:`mt-1`}),(0,M.jsxs)(`span`,{children:[(0,M.jsx)(`strong`,{children:`Slow host:`}),` `,e.slowHost.host,` (`,e.slowHost.value,`× median,`,` `,Math.round((e.slowHost.hostTaskShare??0)*100),`% of tasks)`]})]}):null,e.straggler?(0,M.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,M.jsx)(l,{impactBand:e.straggler.impactBand,className:`mt-1`}),(0,M.jsxs)(`span`,{children:[(0,M.jsx)(`strong`,{children:`Stragglers:`}),` `,(e.straggler.speculativeTasks??0)>0?`${e.straggler.speculativeTasks} speculative task${e.straggler.speculativeTasks===1?``:`s`}`:`${e.straggler.value}% of tasks > 4× P50`]})]}):null,(0,M.jsx)(N,{expanded:c,onClick:v,label:`Task detail`,location:`Stage ${e.stageId}`,controlsId:C}),c?(0,M.jsxs)(`div`,{id:C,className:`space-y-3 pt-1`,children:[p?(0,M.jsx)(_,{metrics:p.metrics,fieldNames:p.fieldNames,markers:{p50:b?.taskDurationP50,p95:b?.taskDurationP95}}):o?(0,M.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Task data isn’t included in exported reports.`}):m?(0,M.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Task data unavailable for this stage.`}):(0,M.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading task data…`}),x?(0,M.jsx)(A,{stageId:e.stageId,appModel:t}):null]}):null]})}var I=(0,j.memo)(function({appModel:e,catalog:t,getTaskData:n,defaultCollapsed:r=!0,type:s,title:c,idPrefix:l,findingLabel:u}){let[d,f]=(0,j.useState)(0),{sortMode:h,setSortMode:g,orderBy:_}=O(),[S,w]=(0,j.useState)(!r),{relevant:T,stageGroups:k,orderedGroups:A}=(0,j.useMemo)(()=>{let e=t.filter(e=>e.type===s),n=new Map;for(let t of e)t.stageId!=null&&(n.has(t.stageId)||n.set(t.stageId,[]),n.get(t.stageId).push(t));let r=[...n.entries()].map(([e,n])=>({stageId:e,findings:n,impactBand:a(n)??`info`,slowHost:b(t,`slowHost`).find(t=>t.stageId===e),straggler:b(t,`straggler`).find(t=>t.stageId===e)})).sort((e,t)=>i[e.impactBand]-i[t.impactBand]||e.stageId-t.stageId);return{relevant:e,stageGroups:r,orderedGroups:_(r,e=>e.findings,e=>e.stageId)}},[t,h,s]),N=p(),P=N?A.findIndex(e=>e.findings.some(e=>e===N.finding)):null,{totalPages:I,effectivePage:L,visible:R}=E(A,d,f,P);if(T.length===0)return null;let z=a(T);return(0,M.jsxs)(m,{title:c,impactBand:z,fixFor:T,badges:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(o,{type:s,impactBand:z??`info`}),C(T,k.length,S)?(0,M.jsx)(D,{mode:h,onChange:g}):null]}),open:S,onOpenChange:w,summary:(0,M.jsx)(y,{value:`${k.length} stage${k.length===1?``:`s`}`,context:v(T.length)}),children:[(0,M.jsx)(`div`,{className:`space-y-3`,children:R.map(t=>(0,M.jsx)(F,{group:t,appModel:e,getTaskData:n,idPrefix:l,findingLabel:u},t.stageId))}),(0,M.jsx)(x,{page:L,totalPages:I,onPrev:()=>f(e=>e-1),onNext:()=>f(e=>e+1)})]})});export{I as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./react-vendor-C6KcUD36.js";import{t}from"./StagePill--P7PDd3s.js";var n=e();function r({stageId:e,appModel:r}){let i=r.stages.get(e);return(0,n.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,n.jsx)(t,{stageId:e}),(0,n.jsx)(`span`,{className:`text-sm font-medium`,children:i?.name??`Stage ${e}`})]})}export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{mn as r}from"./DisclosureContext-DK1_iz6J.js";import{x as i}from"./index-fDiwfuoO.js";var a=e(t(),1),o=n(),s=`inline-flex h-7 shrink-0 cursor-pointer items-center gap-1 rounded-sm border border-border bg-background px-2 font-mono text-xs font-medium whitespace-nowrap outline-none transition-colors hover:bg-muted focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`;function c({stageId:e,className:t}){let{openStage:n}=i();return(0,o.jsxs)(`button`,{type:`button`,className:r(s,t),title:`Open details for Stage ${e}`,"aria-label":`Open details for Stage ${e}`,onClick:()=>n(e),children:[`Stage `,(0,o.jsx)(`b`,{children:e})]})}var l=30;function u(e,{limit:t=6,chunk:n=l,dataset:r=e}={}){let[i,o]=(0,a.useState)({dataset:r,revealed:0}),s=!Object.is(i.dataset,r);s&&o({dataset:r,revealed:0});let c=t+(s?0:i.revealed);return{visible:e.slice(0,c),remaining:Math.max(0,e.length-c),revealMore:()=>o(e=>({dataset:r,revealed:(Object.is(e.dataset,r)?e.revealed:0)+n})),revealThrough:e=>o(n=>{let i=Object.is(n.dataset,r)?n.revealed:0,a=Math.max(i,e-t+1);return a>i?{dataset:r,revealed:a}:n})}}function d({pills:e}){let t=new Set,n=e.filter(e=>!t.has(e.id)&&(t.add(e.id),!0)),{visible:i,remaining:a,revealMore:l}=u(n,{limit:6,dataset:JSON.stringify(n.map(({id:e})=>e))}),d=n.slice(i.length);return(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[i.map(e=>(0,o.jsx)(c,{stageId:e.id},e.id)),a>0&&(0,o.jsxs)(`button`,{type:`button`,className:r(s,`bg-muted`),title:`Also flagged: Stage ${d.map(e=>e.id).join(`, Stage `)}`,"aria-label":`Show ${a} more stage${a===1?``:`s`}`,onClick:l,children:[`+`,a]})]})}export{d as n,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Wt as r,zt as i}from"./DisclosureContext-DK1_iz6J.js";import{t as a}from"./StageFindingGroup-BgYLyj5q.js";var o=e(t(),1),s=n(),c={lowParallelism:`Low parallelism`,dataExplosion:`Data explosion`,taskStageSkew:`Task/stage skew`};function l(e){let t=e.type===`stageShape`?c[e.rule]:`stage shape`;return e.type===`stageShape`?e.rule===`lowParallelism`?`${t}: ${e.value} tasks per core`:e.rule===`taskStageSkew`?`${t}: ${i(`pctFraction`,r(e))}`:`${t}: ${e.value}`:`${t}: ${e.value}`}var u=(0,o.memo)(function(e){return(0,s.jsx)(a,{...e,type:`stageShape`,title:`Stage Shape`,idPrefix:`stage-shape`,findingLabel:l})});export{u as StageShape};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,c as i,s as a}from"./DisclosureContext-DK1_iz6J.js";import{P as o,k as s}from"./index-fDiwfuoO.js";import{n as c,t as l}from"./WidgetLeadSummary-CXFZP00C.js";import{t as u}from"./RowPagination-C-LzWkI5.js";import{t as d}from"./ImpactEstimate-Dm3xWbzV.js";import{r as f}from"./impact-sort-mC5ISgX8.js";import{n as p}from"./finding-anchor-Dr40LkS9.js";import{t as m}from"./usePagedRows-BafD6bEN.js";import{n as h,t as g}from"./useSortMode-DjrAN-z4.js";import{t as _}from"./StageHeader-CIETkjVZ.js";var v=e(t(),1),y=n();function b(e){return`${e.value}m stage duration`}function x({finding:e,appModel:t}){let n=p([e]);return(0,y.jsxs)(`li`,{ref:n.ref,tabIndex:n.tabIndex,"data-flashed":n.dataFlashed,className:`space-y-1 text-sm transition-colors ${n.flashClassName}`,children:[(0,y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,y.jsx)(a,{impactBand:e.impactBand}),e.stageId==null?null:(0,y.jsx)(_,{stageId:e.stageId,appModel:t}),(0,y.jsx)(`strong`,{children:b(e)})]}),(0,y.jsx)(d,{finding:e})]})}var S=(0,v.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let{sortMode:a,setSortMode:d,orderBy:p}=g(),[_,S]=(0,v.useState)(!n),[C,w]=(0,v.useState)(0),T=t.filter(e=>e.type===`stageSlowness`).slice().sort((e,t)=>r[e.impactBand]-r[t.impactBand]),E=p(T,e=>[e],e=>e.stageId??null),D=o(),O=D?E.findIndex(e=>e===D.finding):null,{totalPages:k,effectivePage:A,visible:j}=m(E,C,w,O);return T.length===0?null:(0,y.jsxs)(s,{title:`Slow Stage`,fixFor:T,impactBand:T[0].impactBand,badges:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(i,{type:`stageSlowness`,impactBand:T[0].impactBand}),f(T,T.length,_)?(0,y.jsx)(h,{mode:a,onChange:d}):null]}),open:_,onOpenChange:S,summary:(0,y.jsx)(l,{value:b(T[0]),context:c(T.length)}),children:[(0,y.jsx)(`ul`,{className:`space-y-2`,children:j.map(t=>(0,y.jsx)(x,{finding:t,appModel:e},t.id))}),(0,y.jsx)(u,{page:A,totalPages:k,onPrev:()=>w(e=>e-1),onNext:()=>w(e=>e+1)})]})});export{S as StageSlowness};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Wt as i,c as a,en as o,s,u as c,zt as l}from"./DisclosureContext-DK1_iz6J.js";import{P as u,k as d}from"./index-fDiwfuoO.js";import{t as f}from"./RowStatusCluster-Dbtmte7l.js";import{n as p,t as m}from"./WidgetLeadSummary-CXFZP00C.js";import{n as h}from"./findings-of-type-BL2u3RGZ.js";import{t as g}from"./RowPagination-C-LzWkI5.js";import{t as _}from"./ImpactEstimate-Dm3xWbzV.js";import{r as v}from"./impact-sort-mC5ISgX8.js";import{n as y}from"./finding-anchor-Dr40LkS9.js";import{t as b}from"./usePagedRows-BafD6bEN.js";import{n as x,t as S}from"./useSortMode-DjrAN-z4.js";import{t as C}from"./StageHeader-CIETkjVZ.js";var w=e(t(),1),T=n();function E(e){let t=i(e);return e.unit===`ratio`?`task duration ${e.metric} ${t}×`:e.unit===`count`?`${t} speculative attempt${t===1?``:`s`} discarded`:`${l(`pct`,t)} of tasks straggled`}function D({finding:e,appModel:t}){let n=y([e]);return(0,T.jsxs)(`li`,{ref:n.ref,tabIndex:n.tabIndex,"data-flashed":n.dataFlashed,className:`space-y-1 text-sm transition-colors ${n.flashClassName}`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsx)(s,{impactBand:e.impactBand}),e.stageId==null?null:(0,T.jsx)(C,{stageId:e.stageId,appModel:t})]}),(0,T.jsx)(c,{children:(0,T.jsx)(f,{confidence:e.confidence,validationRequired:e.validationRequired})})]}),(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:E(e)}),o(e)?(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(e)}):null,(0,T.jsx)(_,{finding:e})]})}var O=(0,w.memo)(function({appModel:e,catalog:t,defaultCollapsed:n=!0}){let{sortMode:i,setSortMode:o,orderBy:s}=S(),[c,l]=(0,w.useState)(!n),[f,_]=(0,w.useState)(0),y=h(t,`straggler`).slice().sort((e,t)=>r[e.impactBand]-r[t.impactBand]),C=s(y,e=>[e],e=>e.stageId??null),O=u(),k=O?C.findIndex(e=>e===O.finding):null,{totalPages:A,effectivePage:j,visible:M}=b(C,f,_,k);return y.length===0?null:(0,T.jsxs)(d,{title:`Stragglers`,impactBand:y[0].impactBand,fixFor:y,badges:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(a,{type:`straggler`,impactBand:y[0].impactBand}),v(y,y.length,c)?(0,T.jsx)(x,{mode:i,onChange:o}):null]}),open:c,onOpenChange:l,summary:(0,T.jsx)(m,{value:E(y[0]),context:p(y.length)}),children:[(0,T.jsx)(`ul`,{className:`space-y-2`,children:M.map(t=>(0,T.jsx)(D,{finding:t,appModel:e},t.id))}),(0,T.jsx)(g,{page:j,totalPages:A,onPrev:()=>_(e=>e-1),onNext:()=>_(e=>e+1)})]})});export{O as Straggler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Wt as i,Xt as a,c as o,s,zt as c}from"./DisclosureContext-DK1_iz6J.js";import{P as l,k as u,ut as d}from"./index-fDiwfuoO.js";import{n as f,t as p}from"./WidgetLeadSummary-CXFZP00C.js";import{n as m}from"./findings-of-type-BL2u3RGZ.js";import{t as h}from"./StagePill--P7PDd3s.js";import{t as g}from"./RowPagination-C-LzWkI5.js";import{t as _}from"./ImpactEstimate-Dm3xWbzV.js";import{r as v}from"./impact-sort-mC5ISgX8.js";import{n as y}from"./finding-anchor-Dr40LkS9.js";import{t as b}from"./usePagedRows-BafD6bEN.js";import{n as x,t as S}from"./useSortMode-DjrAN-z4.js";var C=e(t(),1),w=n();function T(e){return e.stageId!=null}function E({groups:e,otherFailedTasks:t}){return e.length===0?null:(0,w.jsxs)(`ul`,{className:`space-y-2`,"aria-label":`Distinct failures`,children:[e.map((e,t)=>(0,w.jsxs)(`li`,{className:`flex flex-col gap-1`,children:[(0,w.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[e.count,` task`,e.count===1?``:`s`,`: `,(0,w.jsx)(`strong`,{className:`break-words`,children:d(e)})]}),e.stackExcerpt?(0,w.jsx)(`pre`,{className:`max-h-40 overflow-auto rounded-md bg-muted p-2 text-xs whitespace-pre`,children:e.stackExcerpt}):null]},t)),t>0?(0,w.jsxs)(`li`,{className:`text-xs text-muted-foreground`,children:[t,` more failed task`,t===1?``:`s`,` not shown`]}):null]})}function D({finding:e}){let t=y([e]),n=e.dominantError??e.dominantReason;return(0,w.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`flex flex-col gap-1 transition-colors ${t.flashClassName}`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(h,{stageId:e.stageId}),(0,w.jsx)(s,{impactBand:e.impactBand})]}),(0,w.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Failure rate: `,(0,w.jsxs)(`strong`,{children:[e.value,`%`]}),` (`,e.failedTasks,` tasks) · Dominant error: `,(0,w.jsx)(`strong`,{className:`break-words`,children:n??`—`})]}),(0,w.jsx)(E,{groups:e.failureGroups,otherFailedTasks:e.otherFailedTasks}),(0,w.jsx)(_,{finding:e})]})}function O({appModel:e,catalog:t,defaultCollapsed:n=!0}){let[s,d]=(0,C.useState)(0),{sortMode:h,setSortMode:_,orderBy:y}=S(),[E,O]=(0,C.useState)(!n),k=l(),A=(0,C.useRef)(!1);(0,C.useEffect)(()=>{if(!A.current){A.current=!0;return}d(0)},[e]);let j=m(t,`failures`).filter(T),M=[...j].sort((e,t)=>r[e.impactBand]-r[t.impactBand]||e.stageId-t.stageId),N=y(M,e=>[e],e=>e.stageId),P=k?N.findIndex(e=>e===k.finding):null,{totalPages:F,effectivePage:I,visible:L}=b(N,s,d,P);return j.length===0?null:(0,w.jsxs)(u,{title:`Failed Tasks`,fixFor:j,impactBand:a(j),badges:(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(o,{type:`failures`,impactBand:a(j)}),v(j,j.length,E)?(0,w.jsx)(x,{mode:h,onChange:e=>{_(e),d(0)}}):null]}),open:E,onOpenChange:O,summary:(0,w.jsx)(p,{value:c(`pct`,i(M[0])),context:f(j.length)}),children:[(0,w.jsx)(`ul`,{className:`space-y-3`,children:L.map(e=>(0,w.jsx)(D,{finding:e},e.id))}),(0,w.jsx)(g,{page:I,totalPages:F,onPrev:()=>d(e=>e-1),onNext:()=>d(e=>e+1)})]})}export{O as TaskFailures};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{t as r}from"./StageFindingGroup-BgYLyj5q.js";var i=e(t(),1),a=n();function o(e){return`P50 ${e.value}ms across many small tasks`}var s=(0,i.memo)(function(e){return(0,a.jsx)(r,{...e,type:`tinyTask`,title:`Tiny Tasks`,idPrefix:`tiny-task`,findingLabel:o})});export{s as TinyTask};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Ot as r,Xt as i,c as a,u as o}from"./DisclosureContext-DK1_iz6J.js";import{P as s,S as c,k as l,l as u}from"./index-fDiwfuoO.js";import{t as d}from"./RowStatusCluster-Dbtmte7l.js";import{n as f,t as p}from"./WidgetLeadSummary-CXFZP00C.js";import{n as m}from"./findings-of-type-BL2u3RGZ.js";import{n as h}from"./StagePill--P7PDd3s.js";import{t as g}from"./RowPagination-C-LzWkI5.js";import{t as _}from"./ImpactEstimate-Dm3xWbzV.js";import{i as v,r as y}from"./impact-sort-mC5ISgX8.js";import{n as b,t as x}from"./finding-anchor-Dr40LkS9.js";import{t as S}from"./usePagedRows-BafD6bEN.js";import{n as C,t as w}from"./useSortMode-DjrAN-z4.js";var T=e(t(),1),E=n();function D({finding:e}){let t=b([e]);return(0,E.jsxs)(`li`,{ref:t.ref,tabIndex:t.tabIndex,"data-flashed":t.dataFlashed,className:`space-y-2 ${x} transition-colors ${t.flashClassName}`,children:[e.stageIds.length>0?(0,E.jsx)(h,{pills:e.stageIds.map(e=>({id:e}))}):null,(0,E.jsxs)(`p`,{children:[u(e.recommendation??``).measured??e.recommendation,` `,(0,E.jsx)(_,{finding:e})]})]})}var O=(0,T.memo)(function({catalog:e,defaultCollapsed:t=!0}){let{sortMode:n,setSortMode:u,orderBy:h}=w(),[_,b]=(0,T.useState)(!t),[x,O]=(0,T.useState)(0),{findings:k,pills:A}=(0,T.useMemo)(()=>{let t=m(e,`underBroadcast`).sort((e,t)=>r[e.impactBand]-r[t.impactBand]);return{findings:t,pills:[...new Set(t.flatMap(e=>e.stageIds))].map(e=>({id:e}))}},[e]),j=h(k,e=>[e],v),M=s(),N=M?j.findIndex(e=>e===M.finding):null,{totalPages:P,effectivePage:F,visible:I}=S(j,x,O,N);return k.length===0?null:(0,E.jsxs)(l,{title:`Missed Broadcast Join`,fixFor:k,impactBand:i(k),open:_,onOpenChange:b,badges:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(a,{type:`underBroadcast`,impactBand:i(k)??`info`,className:c}),y(k,k.length,_)?(0,E.jsx)(C,{mode:n,onChange:u}):null]}),statusBadge:(0,E.jsx)(o,{children:(0,E.jsx)(d,{confidence:k[0].confidence,validationRequired:k[0].validationRequired,evidenceKey:`sqlPlan`})}),summary:(0,E.jsx)(p,{value:`${A.length} stage${A.length===1?``:`s`}`,context:f(k.length)}),children:[(0,E.jsx)(`ul`,{className:`space-y-3 text-sm`,children:I.map(e=>(0,E.jsx)(D,{finding:e},e.id))}),(0,E.jsx)(g,{page:F,totalPages:P,onPrev:()=>O(e=>e-1),onNext:()=>O(e=>e+1)})]})});export{O as UnderBroadcast};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./react-vendor-C6KcUD36.js";var t=e();function n(e){return`${e} finding${e===1?``:`s`}`}function r({value:e,context:n}){return(0,t.jsx)(`div`,{className:`space-y-2`,children:(0,t.jsxs)(`p`,{className:`flex min-h-[4rem] flex-wrap content-start items-baseline gap-x-2`,children:[(0,t.jsx)(`span`,{className:`line-clamp-2 font-mono text-xl font-semibold tracking-[-0.02em]`,title:typeof e==`string`?e:void 0,children:e}),(0,t.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:n})]})})}export{n,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,i as n}from"./react-vendor-C6KcUD36.js";import{Cn as r,gn as i,hn as a,mn as o}from"./DisclosureContext-DK1_iz6J.js";var s=e(t(),1).forwardRef(function(e,t){let{render:n,className:a,disabled:o=!1,focusableWhenDisabled:s=!1,nativeButton:c=!0,style:l,...u}=e,{getButtonProps:d,buttonRef:f}=r({disabled:o,focusableWhenDisabled:s,native:c});return i(`button`,e,{state:{disabled:o},ref:[t,f],props:[u,d]})}),c=n(),l=a(`group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none cursor-pointer focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-accent-soft text-accent hover:bg-[color-mix(in_oklch,var(--accent-soft),var(--accent)_12%)] aria-expanded:bg-accent-soft`,outline:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground`,ghost:`hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50`,destructive:`bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40`,link:`text-primary underline-offset-4 hover:underline`,soft:`bg-accent-soft text-accent hover:bg-[color-mix(in_oklch,var(--accent-soft),var(--accent)_12%)] aria-expanded:bg-accent-soft`},size:{default:`h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xs:`h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,icon:`size-8`,"icon-xs":`size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg`,"icon-lg":`size-9`}},defaultVariants:{variant:`default`,size:`default`}});function u({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,c.jsx)(s,{"data-slot":`button`,className:o(l({variant:t,size:n,className:e})),...r})}export{l as n,u as t};
|