Skip to content

🚨 Every rollout since 3.0.0-ci.8059 stalls at the bake gate: #3628's MeshNodeContentDegradedException fires during the NodeType bake for instance nodes typed by their own NodeType's source (4 Doc types 'regressed') #3663

Description

@rbuergi

What happened

Rolling the fleet to 3.0.0-ci.8059 (core a57a6b5 Γ— plugins a7abdb2c) on 2026-09-08 00:22–00:50Z: on memex.systemorph.com the new pod (memex-portal-deployment-7d5d458cc4-cbztk) never passes its startup probe β€” /health answers 503 from nodetype_bake:

Health check nodetype_bake with status Unhealthy … NodeType bake regressed on this image β€” refusing readiness so the rollout stalls with the previous image still serving. 4 NodeType(s) regressed on this image: Doc/Architecture/BusinessRules/Cession, Doc/DataMesh/PythonPandasNode/PandasExplorer, Doc/DataMesh/SocialMedia/Post, Doc/DataMesh/SocialMedia/Profile

The same pod's log names the cause for each of the four β€” one instance node per type, read during the bake:

MeshWeaver.Mesh.MeshNodeContentDegradedException: MeshNodeStreamCache.GetStream: content for 'Doc/Architecture/BusinessRules/Cession/MotorXL' (nodeType 'Doc/Architecture/BusinessRules/Cession') stayed an untyped JsonElement β€” the $type discriminator resolved to no registered CLR type on the reading hub and the mesh-wide content-type registry did not recover it …
  … 'Doc/DataMesh/PythonPandasNode/PandasExplorer/LiveFrame' ($type PandasExplorer)
  … 'Doc/DataMesh/SocialMedia/Post/Post-001' ($type SocialMediaPost)
  … 'Doc/DataMesh/SocialMedia/Profile/Roland-LinkedIn' ($type SocialMediaProfile)

The gate did its job: the old 8055 pods keep serving, the deploy run (Memex 34173391343) reported the stalled rollout red at its 25-minute budget. Nothing broken is serving. But the release is un-rollable.

Root cause

8055 (core 7bfe2d9) rolled clean on the same portal 2 h earlier (Job 36 complete, 3/3 ready). The only core change between the sets is #3628 (7bfe2d907..a57a6b52b, "the untyped-content gate can fire"), which introduced MeshNodeContentDegradedException and throws it from MeshNodeStreamCache.ConvertContentJsonElementToTyped when content stays a JsonElement. The four regressed types are exactly the doc types whose instance nodes carry a $type declared in the type's OWN Source/ (CessionData, PandasExplorer, SocialMediaPost, SocialMediaProfile): during the bake, the instance is read on a hub where that type is not yet registered (the type is what the bake is compiling), the content is legitimately untyped for that moment, and what used to be a silent degradation is now a throw inside the bake β€” which the sweep scores as a regression. LateContentTypeRegistrationTest (added by #3628) was meant to cover the late-registration case; the bake path is a case it does not model.

Both portals show it: memex-cloud's 8059 pod logs the same exception for Posts/ClaudeAbstractsErrors (SocialMedia/Post), plus CS0246: 'CessionData' could not be found on Doc/Architecture/BusinessRules/Cession β€” the same type, failing to compile its own source in the same window.

What needs to happen

The throw must not fire for content whose type is registered by the NodeType being baked β€” the bake must read those instances after their type compiled, or the conversion must degrade (as before) rather than throw while that type's compilation is in flight. Until then every set β‰₯ a57a6b5 stalls every rollout at the bake gate; the fleet stays on 8055 (whose migration image lacks Plugins#1488's budget β€” the databases are already migrated to v55 by the 8059 Job, so 8055 pods serve fine).

Evidence: Memex runs 34173111536 (memex-cloud) and 34173391343 (memex); pods memex-portal-deployment-7d5d458cc4-cbztk (memex) and memex-portal-deployment-8b96fdbd4-h7cxj (memex-cloud).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions