GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — [profiler-app] Header, theme and missing-data handling by Karakatiza666 · Pull Request #7949 · feldera/feldera Conversation
|
|
What I ran
The perf suite ( Findings
Other gates pass. All dependencies are MIT ( |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
profiler-app: - Use the new Feldera logo and logomark. They turn white in dark mode. - Add a light/dark switch at the top right. It follows the system setting until the user clicks it, and does not save the choice. - Show the thin loading strip while a bundle or timestamp loads and while the diagram is laid out, like web-console. - Load the `fd-*` icon font. Before, all of these icons were missing, for example the arrow on the scroll-down button. - Use the web-console scrollbar styles, also in the Monaco editor. profiler-layout (SupportBundleViewerLayout): - When the bundle has no pipeline code, do not show the code panel. - Disable the Metrics tab when there is no profile and no global stats. - Show one header message for each combination of missing profile, metrics and code. - Do not let the resizers collapse the code panel (min. 15%). - Add an optional `headerEnd` snippet for controls at the end of the header. Shared: move the generated `fd.css` and the scrollbar styles to feldera-theme, so that web-console and profiler-app use the same files.
Test that SupportBundleViewerLayout: - hides the code panel when the bundle has no code or only empty files, - disables the Metrics tab without a profile and global metrics, and selects the first enabled tab instead, - shows one header notice for each combination of missing profile, metrics and code. Remove the test for the "Profile does not contain the source code" fallback, which the layout does not show any more. Also clean up the comments of the previous commit.
| file: ZipItem, | ||
| dataflow: Dataflow | undefined, | ||
| programCode: string[] | undefined | ||
| ): Promise<{ profile?: CircuitProfile; profileError?: string }> { |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
bug (medium): JSON.parse runs outside the try. If circuit_profile.json is truncated or malformed, processProfileFiles throws and the whole bundle fails to load: logs, config, metrics and code are all lost. The PR says an unreadable profile collapses the graph panel and keeps the rest, but that only holds when fromJson throws. A truncated file in a support bundle is a realistic case. I checked this with a browser test that passes '{"nodes": [' and fails with SyntaxError: Unexpected end of JSON input. Move the parse into the try, and add a test like this:
it('gives profileError, and keeps the other files, when circuit_profile.json is truncated', async () => { const result = await processProfileFiles([ file(`${TIMESTAMP}/circuit_profile.json`, '{"nodes": ['), logs() ]) expect(result.profile).toBeUndefined() expect(result.profileError).toMatch(/^Failed to read the circuit profile: /) expect(result.logText).toBe('starting up\n') })
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| try { | ||
| // The work can block the main thread for seconds, so the browser must paint the loading | ||
| // state first. | ||
| await afterNextPaint() |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
pitfall (medium): requestAnimationFrame does not fire in a hidden tab. The guard wraps every load, including the remote support bundle download in web-console's handleLoadRemote. If a user clicks "Load", then switches tabs while the bundle is collected, the download does not start until they come back. The progress strip shows the whole time. Consider racing the rAF against a short timeout, or skipping the wait when document.visibilityState === 'hidden'. You could also move the wait to after the download, just before the CPU-heavy parse.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
What I ran
Gates: Tests and manual testing are documented, and the new browser tests passed 3 of 3 runs with no timing assertions. The one new dependency, Missing tests (medium):
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
b559509 to
8cc1688
Compare
8cc1688 to
bddb222
Compare
At least 1 approving review is required to merge this pull request.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.