You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Production has finally moved off v2.156.4 — it now serves v2.159.2 (prod_fdc1142), which closes the 12-day delivery gap in #1609. That release contains the #1592 fix (commit 14865449, first tagged v2.156.5, an ancestor of the deployed commit).
The Monaco DI errors are still happening anyway:
[createInstance] um depends on UNKNOWN service actionWidgetService.
[createInstance] Fm depends on UNKNOWN service ICodeLensCache.
[createInstance] tb depends on UNKNOWN service IInlayHintsCache.
[createInstance] Lk depends on UNKNOWN service ISuggestMemories.
[createInstance] _x depends on UNKNOWN service treeViewsDndService.
So #1609's premise ("the fix never shipped") no longer explains it, and #1592's fix — removing the eager Monaco import — was not sufficient. Filing separately rather than reopening #1592, because the cause is a different one: the fix did what it claimed, and the errors survive it.
Datadog findings (last 24h, env:prod, version prod_fdc1142 only)
Events
275 unhandled source errors (55 / 55 / 53 / 52 / 52 across the five services)
Sessions
20 of 127 on this release (16%)
Handling
unhandled
Share of all errors on this release
267 of 356 (75%)
Per-session rate has not improved — it is slightly worse than when #1592 was filed (13 of 166 sessions, 7.8%, vs 20 of 127, 15.7%; different traffic mix, so treat as "unchanged at best", not a regression).
Views affected (every surface that opens an editor):
assets/editor.api-OBQnf1nL.js (2.6 MB) — contains getSingletonServiceDescriptors and the UNKNOWN service throw. Monaco core + the standalone service collection.
assets/toggleHighContrast-el2uNoWb.js (1.15 MB) — contains all five of actionWidgetService, ICodeLensCache, IInlayHintsCache, ISuggestMemories, treeViewsDndService. This is the monaco-editor/features/register.all chunk.
toggleHighContrastimports fromeditor.api, so ES module semantics guarantee editor.api evaluates first — before those five registerSingleton calls run. Making everything lazy doesn't change that ordering; it just moves both chunks later.
That is why removing the eager import didn't help: eagerness was never the load-bearing part. The ordering between the two chunks is.
Where to look next
src/lib/monaco/setup.ts imports monaco-editor/editor (→ editor.api) on the line above import 'monaco-editor/features/register.all', so even inside the lazy graph core evaluates before the registrations.
Two candidate root causes, in order of likelihood:
A duplicated registry. If rolldown emits its own copy of vs/platform/instantiation/common/extensions.js (which owns the module-level array registerSingleton pushes to) into each chunk, register.all registers into one copy while StandaloneServices reads the other, and exactly the five singletons that only register.all provides come up missing. Check with npx vite build --sourcemap and grep the sourcemap's sources for instantiation/common/extensions — more than one emitting chunk confirms it.
Genuine ordering. If the registry is shared, then editor.api's evaluation snapshots the descriptors, and the fix is to make the registrations evaluate before core — e.g. a single Monaco barrel module that imports features/register.all first and re-exports the API, so no consumer can reach editor.api ahead of it.
Two stale comments to clean up while in here, both now describing code that doesn't exist:
src/lib/monaco/setup.ts's header says "it is imported at the top of main.tsx" — main.tsx doesn't reference Monaco; MonacoEditor.tsx loads it behind React.lazy.
configMonaco.ts's doc comment presents the dynamic import() as what prevents these errors. It does prevent the eager link, but not the errors.
Impact
Cosmetic to the user in that editors still open — but 275 unhandled errors a day is 75% of this release's RUM error volume, which buries everything else, and #1592 already noted these fire per editor load. Also blocks reading #1609 as resolved: the deploy gap is closed, so anything still attributed to it needs re-checking.
Notes
No customer identifiers included; view paths are route templates with parameters unresolved.
Summary
Production has finally moved off v2.156.4 — it now serves v2.159.2 (
prod_fdc1142), which closes the 12-day delivery gap in #1609. That release contains the #1592 fix (commit14865449, first tagged v2.156.5, an ancestor of the deployed commit).The Monaco DI errors are still happening anyway:
So #1609's premise ("the fix never shipped") no longer explains it, and #1592's fix — removing the eager Monaco import — was not sufficient. Filing separately rather than reopening #1592, because the cause is a different one: the fix did what it claimed, and the errors survive it.
Datadog findings (last 24h,
env:prod, versionprod_fdc1142only)sourceerrors (55 / 55 / 53 / 52 / 52 across the five services)unhandledPer-session rate has not improved — it is slightly worse than when #1592 was filed (13 of 166 sessions, 7.8%, vs 20 of 127, 15.7%; different traffic mix, so treat as "unchanged at best", not a regression).
Views affected (every surface that opens an editor):
/$organizationId/$clusterId/config//$organizationId/$clusterId/instance/$instanceId/databases/$databaseName/$tableName//$organizationId/$clusterId/instance/$instanceId/config//$organizationId/$clusterId/apps//$organizationId/$clusterId/logs//$organizationId/$clusterId/instance/$instanceId/logs//$organizationId/$clusterId/databases/$databaseName/$tableName/Stacks land in
toggleHighContrast-el2uNoWb.js→editor.api-OBQnf1nL.js, entered fromonMouseMove→suggestHoverAnchor, i.e. hovering in the editor.Verified against the bundle production actually serves
No RUM attribute involved —
curl https://fabric.harper.fast/and follow the chunks:assets/index-BLswmOju.jsinitializes RUM withversion:`prod_fdc1142`.editor.api-OBQnf1nL.jsno longer appears as a static import of the entry — its only occurrences there are inside a dynamic-import preload manifest array.index.html'smodulepreloadlist contains no Monaco chunk (tokenization-uOBOyHAS.jsis 8.5 KB and contains none of the five service ids). [RUM] Monaco DI: 5 UNKNOWN service errors per editor load since v2.156.4 (0.56 registrations land in a lazy chunk) #1592's specific defect is gone.assets/editor.api-OBQnf1nL.js(2.6 MB) — containsgetSingletonServiceDescriptorsand theUNKNOWN servicethrow. Monaco core + the standalone service collection.assets/toggleHighContrast-el2uNoWb.js(1.15 MB) — contains all five ofactionWidgetService,ICodeLensCache,IInlayHintsCache,ISuggestMemories,treeViewsDndService. This is themonaco-editor/features/register.allchunk.toggleHighContrastimports fromeditor.api, so ES module semantics guaranteeeditor.apievaluates first — before those fiveregisterSingletoncalls run. Making everything lazy doesn't change that ordering; it just moves both chunks later.That is why removing the eager import didn't help: eagerness was never the load-bearing part. The ordering between the two chunks is.
Where to look next
src/lib/monaco/setup.tsimportsmonaco-editor/editor(→editor.api) on the line aboveimport 'monaco-editor/features/register.all', so even inside the lazy graph core evaluates before the registrations.Two candidate root causes, in order of likelihood:
vs/platform/instantiation/common/extensions.js(which owns the module-level arrayregisterSingletonpushes to) into each chunk,register.allregisters into one copy whileStandaloneServicesreads the other, and exactly the five singletons that onlyregister.allprovides come up missing. Check withnpx vite build --sourcemapand grep the sourcemap'ssourcesforinstantiation/common/extensions— more than one emitting chunk confirms it.editor.api's evaluation snapshots the descriptors, and the fix is to make the registrations evaluate before core — e.g. a single Monaco barrel module that importsfeatures/register.allfirst and re-exports the API, so no consumer can reacheditor.apiahead of it.Two stale comments to clean up while in here, both now describing code that doesn't exist:
src/lib/monaco/setup.ts's header says "it is imported at the top ofmain.tsx" —main.tsxdoesn't reference Monaco;MonacoEditor.tsxloads it behindReact.lazy.configMonaco.ts's doc comment presents the dynamicimport()as what prevents these errors. It does prevent the eager link, but not the errors.Impact
Cosmetic to the user in that editors still open — but 275 unhandled errors a day is 75% of this release's RUM error volume, which buries everything else, and #1592 already noted these fire per editor load. Also blocks reading #1609 as resolved: the deploy gap is closed, so anything still attributed to it needs re-checking.
Notes
No customer identifiers included; view paths are route templates with parameters unresolved.