Task #209 exit gate — seed-creds fix + live Modbus verification (4/5 stages) #218
Reference in New Issue
Block a user
Delete Branch "task-209-exitgate-seed-creds"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Exit gate for the #209 umbrella. Factories + seeds shipped in #216 (Modbus) + #217 (AbCip/S7/AbLegacy); this PR actually boots the server end-to-end against the Modbus seed and fixes two seed-side issues the live boot surfaced.
Seed fixes
Missing
ClusterNodeCredentialrow.sp_GetCurrentGenerationForClusterenforcesClusterNodeCredential.Value = SUSER_SNAME()and aborts withRAISERROR('Unauthorized: caller sa is not bound to NodeId'). Without it the server fails bootstrap withBootstrapException: Central DB unreachable and no local cache available(the real error gets swallowed by the cache-fallback path). All four seed scripts now insert the binding row.Config cache gitignore. Running the server from the repo root writes
config_cache.db+config_cache-log.dbat cwd, outside the existingsrc/.../Server/config_cache.dbpattern. Addedconfig_cache*.dbso any run location is covered.Verified live against Modbus
Booted server against
seed-modbus-smoke.sql→ pymodbus--profile standard→test-modbus.ps1 -BridgeNodeId "ns=2;s=HR200":Forward-direction reads + subscription delivery are proven working through the server. Stage 4 (reverse-write) fails with
0x801F0000on the write-response — not an exception on the server write path, so this is a type-mismatch or ACL-default issue in the node-manager write guard chain. Filing a follow-up issue; it's not a factory or driver defect.Server-log confirmation
The
skippedUnknownType=0is the win — before #216 it'd be 1. The factory wiring is live.Test plan