Skip to content

fix(relay): preserve sessions across hot upgrades#93

Merged
msmakouz merged 1 commit into
masterfrom
fix/relay-stateful-hot-reload
Jul 23, 2026
Merged

fix(relay): preserve sessions across hot upgrades#93
msmakouz merged 1 commit into
masterfrom
fix/relay-stateful-hot-reload

Conversation

@wolfy-j

@wolfy-j wolfy-j commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • make Relay central and per-user hubs statefully upgradable
  • preserve hub PIDs, child plugin PIDs, connected clients, counters, and process-group declarations
  • transfer only serializable state and reopen process-group handles after upgrade
  • handle Runtime OUTDATED through process.upgrade with no restart fallback

Root cause

Relay services were marked upgradable = false. Package updates therefore could not use Runtime's in-place upgrade protocol, and external force termination broke active WebSocket/user-hub continuity.

Verification

  • Framework CI: Relay lint passed and all 19 Relay tests passed under v0.3.26a
  • Framework CI module-manifest validation passed
  • v0.3.26a live E2E:
    • central PID remained 0x00004
    • user-hub PID remained 0x00055
    • a WebSocket open before both upgrades stayed open
    • a second WebSocket connected after both upgrades
    • a Hub UI package install completed with the original WebSocket still open
    • full application restart restored registry history and accepted a fresh WebSocket

@wolfy-j
wolfy-j force-pushed the fix/relay-stateful-hot-reload branch from c484b58 to 62071ab Compare July 23, 2026 14:53
@msmakouz
msmakouz merged commit 4c627da into master Jul 23, 2026
19 checks passed
@msmakouz
msmakouz deleted the fix/relay-stateful-hot-reload branch July 23, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants