docs(raw): record that a raw rename rebinds live — #489 closed as fixed-by-#516

Re-ran #489's own repro recipe on docker-dev. It does not reproduce: renaming
pymodbus/plc/HR200X -> HR200Z and deploying (no node restart, container at 0
restarts) yields the new raw NodeId serving live ~1 Hz data, the old NodeId gone
with BadNodeIdUnknown, and the UNS projection still Good.

The mechanism is NOT the ApplyDelta/ReinitializeAsync chain the issue's
2026-07-26 code-trace predicted. The node log shows a stop-and-respawn:

    DriverHost: stopped driver child MAIN-modbus
    DriverHost: spawned Modbus driver MAIN-modbus (stub=False)
    DriverInstance MAIN-modbus: subscribed to 2 refs (poll-sub-1)

#516 moved a DriverConfig change out of toDelta and into toStop+toSpawn so the
factory is the single parse authority. A rename changes the merged DriverConfig,
so the child is rebuilt against the new RawPaths and re-subscribes on the same
deploy. #489 was fixed as a side effect and needs no code change.

Also gated the sibling case the issue did not cover: renaming the *device*
(the middle RawPath segment, plc -> plcz) rebinds identically.

Records the operator-facing fact in docs/Raw.md, including the flip side #516
accepts — a rename reconnects the driver, briefly dropping every tag on it.

Claude-Session: https://claude.ai/code/session_015p7wGqy3YpZNCpDzTpGMKo
This commit is contained in:
Joseph Doherty
2026-07-31 12:00:17 -04:00
parent 916f0f79f6
commit be3152e184
2 changed files with 13 additions and 1 deletions
+7
View File
@@ -32,6 +32,13 @@ points at it — the error names the referencing equipment). Renames return non-
**warnings**: renaming a node changes the RawPath of every historized / UNS-referenced tag
beneath it (its historian tagname / UNS projection path moves).
**A rename rebinds live data on the deploy — no node restart is needed** (Gitea #489, live-gated
2026-07-31 for both a tag rename and a device rename). The mechanism is #516's respawn: a rename
changes the merged `DriverConfig`, and `DriverSpawnPlan.Compute` stops and respawns the driver child
on any `DriverConfig` change, so the driver rebuilds against the new RawPaths and re-subscribes.
⚠️ The flip side is that **a rename reconnects the driver** — briefly dropping every tag on it, not
just the renamed one. That is the accepted cost #516 documents; it is not specific to renames.
## Endpoint → DeviceConfig (the channel/device split)
v3 moves the **connection endpoint** off the driver and onto the **Device** (`DeviceConfig`),