Repository navigation
More telemetry: measure child loading after node expansion - #945
Open
shayansadeghieh wants to merge 6 commits into
Open
shayansadeghieh wants to merge 6 commits into
shayansadeghieh wants to merge 6 commits into
Conversation
shayansadeghieh
force-pushed
the
shayansadeghieh/child-loading-telemetry
branch
from
October 24, 2026 16:42
0256ed3 to
f734ec6
Compare
Signed-off-by: Shayan Sadeghieh <shayansadeghieh@stripe.com> Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com>
shayansadeghieh
force-pushed
the
shayansadeghieh/child-loading-telemetry
branch
from
October 24, 2026 16:47
f734ec6 to
039afea
Compare
Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com> Signed-off-by: Shayan Sadeghieh <shayansadeghieh@stripe.com>
Signed-off-by: Shayan Sadeghieh <shayansadeghieh@stripe.com> Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com>
shayansadeghieh
force-pushed
the
shayansadeghieh/child-loading-telemetry
branch
from
October 24, 2026 21:37
3044b63 to
2a05393
Compare
Signed-off-by: Shayan Sadeghieh <shayansadeghieh@stripe.com> Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com>
Signed-off-by: Shayan Sadeghieh <shayansadeghieh@stripe.com> Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
The existing node-expansion timing can make an expansion look fast while its child data is still loading. In a completed synthetic workflow,
flyteconsole.node.expandrecorded 38.1 ms, while the new readiness measurement for the same click recorded 5,893 ms. Another expansion recorded 152.2 ms versus 5,972.7 ms.We need to track this loading gap to evaluate future performance improvements. Add
flyteconsole.node.expand.children_loaded, measured from the expand click until the expanded rows satisfy their child-loading readiness checks. Keep the existing row-commit measurement and addworkflowNameto both. This PR adds telemetry; it does not optimize the underlying loading path.Type
Are all requirements met?
Observed loading gap
Manually expanded six nested levels of the same completed synthetic execution, one at a time, in a local production build served through Podman and connected to the backend. Both measures completed at every tested level. These are observations from one sequence, not averages; both columns start at the same click.
node.expandnode.expand.children_loadedThe deeper expansions expose roughly six seconds of loading that the original measurement does not capture. These timings include fetching and frontend processing through the readiness checks; they do not isolate the cause of the delay or measure the final browser paint. Equal timings at the last level mean readiness was already satisfied when the row-commit measurement was recorded.
Synthetic workload
[1, 1, 12, 32]and eight leaf tasks per deepest parent.Separately fetched node-data responses for that same expanded path had the following JSON body sizes:
These are uncompressed JSON response-body sizes, including the compiled dynamic workflow and execution data. They are not compressed transfer sizes or total bytes downloaded during each expansion.
Implementation
NodeExecutionsTablesaves the click time and records the existing measurement when expanded rows commit.NodeExecutionDynamicProviderreports readiness. Parent rows wait for successful child responses to reach the shared execution-data map; dynamic nodes also wait for their downloaded workflow definition to be applied to the row's graph data. Leaf rows have no child-loading requirements.Rows confirmed to be outside the viewport do not block completion because their requests are driven by visibility. Cached data and successful empty responses count as ready; background polling does not extend the measurement. Failed requests stay pending so a successful retry includes the wait. Collapse, navigation, changed filters, or another toggle cancels the pending timing. Only the latest expansion is tracked.
See
docs/node-loading-telemetry.mdfor the flow and how to inspect the browser entries.Validation and telemetry overhead
6afaddd) and this branch (3044b63) as local production Podman images and manually exercised the same six-level expansion path on the same completed synthetic execution. Inspectedflyteconsole.node.expandmeasurements on both builds; both showed increasing row-commit latency at deeper levels. On this branch, also verified thatchildren_loadedcompleted at all six tested levels, producing the measurement pairs above.Mapin place. Reports received without an active expansion do not request a table render. An isolated local Node benchmark measured a median of 0.16 ms for 3,000 map updates across three runs. This measures map bookkeeping only, excluding React, browser rendering, and network work.