feat(notebook-migration, local-dev): manage the notebook migration service and JupyterLab - #7934
Merged
Merged
Conversation
Contributor
Automated Reviewer SuggestionsBased on the
|
zyratlo
force-pushed
the
migration-tool-local-dev
branch
from
August 25, 2026 21:04
7bfa78a to
bd0c0ad
Compare
Contributor
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
zyratlo
marked this pull request as ready for review
August 25, 2026 23:17
Contributor
Author
|
/request-review @mengw15 |
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.
What changes were proposed in this PR?
bin/local-dev.shhad no knowledge of the notebook migration tool, so a contributor running the local dev stack got the tool in the GUI with nothing serving it. This PR registers both pieces with the local dev tooling. It also fixes the JupyterLab iframe, which the browser refused to render under local dev because the origin allowed to frame it was inherited from the single-node deployment.bin/local-dev/main.sh(service catalog)notebook-migration-serviceas a managed JVM service on port 9098, following the same catalog shape as the other single module services. No launch case is needed becausestart_oneis generic over the catalog, and no dirty-source entry is needed because_precompute_src_dirsderives the transitive source closure from the sbt project name.jupyteras Docker infrastructure on port 9100 and adds it to the sets thatupstarts and that state reporting reads, so it appears in the dashboard rather than only starting silently.bin/local-dev/tui.py(dashboard catalog)main.sh, whose array is documented as start order.bin/local-dev/docker-compose.override.yml(iframe origin)TEXERA_ORIGINat the Angular dev server (http://localhost:4200) instead of the nginx origin the single-node stack sets (http://localhost:8080).start-texera-jupyter.shfeeds into Jupyter'sframe-ancestorsCSP directive, so under local dev the only origin permitted to frame the notebook was one that never frames it. The browser refused to render the panel: Firefox reports thatlocalhost:9100will not allow the page to be displayed if another site has embedded it, and Chrome blocks it less explicitly.custom.jsas the postMessagetargetOriginand the inbound origin check, so the cell click sync between the workspace panel and the notebook was silently broken as well. One variable fixes both.lakekeeper-init'sSTORAGE_S3_ENDPOINTaway from the in network hostname. It is defaulted rather than hardcoded, matching that entry's style, so a deployment under a real hostname can still override it.bin/local-dev/README.mdAny related issues, documentation, discussions?
Closes #7933
Parent issue #4301
Depends on #7932, which defines the
jupytercompose service and its image.How was this PR tested?
bin/local-dev/tests/test_local_dev_sh.shpasses (117). The catalog invariants intest_local_dev_tui.pyrun in CI'sinfrajob.Started both services through the tooling against a checkout that also carries #7932.
up jupyterbrings the container up healthy with/apireachable on 9100;up notebook-migration-servicebuilds and launches it natively, with/api/healthcheckreturning ok and the authenticated routes returning 401.For the origin fix, confirmed Jupyter serves
frame-ancestors http://localhost:4200and thatcustom.jscarries the same origin. The compose merge yields one value, not a duplicate key: single-node alone still resolves tohttp://localhost:8080.Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5)