fix(historian): stamp a positive StorageRateMs on provisioned tags #439

Closed
dohertj2 wants to merge 0 commits from fix/gateway-provisioner-storage-rate into master
Owner

GatewayTagProvisioner sent StorageRateMs=0 (proto uint32 default), which makes the gateway's EnsureTags throw ArgumentOutOfRangeException ('Storage rate must be > 0 ms') — so every historized-tag auto-provision silently failed. Stamp 1000ms (gateway convention) + regression test + fix the live-suite inline defs. Found via the R2-06 live gate; unblocks Float/Int2/Int4/Double provisioning (live suite 3/6 -> 5/6). Gateway driver unit 103/103.

GatewayTagProvisioner sent StorageRateMs=0 (proto uint32 default), which makes the gateway's EnsureTags throw ArgumentOutOfRangeException ('Storage rate must be > 0 ms') — so every historized-tag auto-provision silently failed. Stamp 1000ms (gateway convention) + regression test + fix the live-suite inline defs. Found via the R2-06 live gate; unblocks Float/Int2/Int4/Double provisioning (live suite 3/6 -> 5/6). Gateway driver unit 103/103.
dohertj2 added 1 commit 2026-07-13 19:29:58 -04:00
fix(historian): stamp a positive StorageRateMs on provisioned tags
v2-ci / build (pull_request) Successful in 4m7s
v2-ci / unit-tests (pull_request) Failing after 10m50s
4da2d62b9a
GatewayTagProvisioner built HistorianTagDefinition without a StorageRateMs, so
the proto uint32 defaulted to 0. The gateway's EnsureTags maps StorageRateMs
straight to the AVEVA SDK's storageRateMs, which requires a positive value —
0 makes the SDK throw ArgumentOutOfRangeException ('Storage rate must be > 0 ms'),
so EVERY historized-tag auto-provision (the deploy-time IHistorianProvisioning
hook) silently failed at the gateway with failed=N.

Stamp DefaultStorageRateMs=1000 (matches the gateway's own live provisioner
convention; quantized 1000/5000/10000). Add a regression unit test asserting the
definition carries a positive rate, and set StorageRateMs on the live-suite's
inline definitions so the retype probe reaches a real EnsureTags.

Found via the R2-06 live gate against a real 0.2.0 gateway + AVEVA historian:
with this fixed, Float/Int2/UInt2/Int4/UInt4/Double all provision and the live
suite goes 3/6 -> 5/6. (Int1/Boolean remains blocked by the gateway histsdk's
ProtocolEvidenceMissingException for Int1 — a gateway-side type-support gap, not
this bug.)

Gateway driver unit 103/103.
Author
Owner

Merged to master via --no-ff at 666908d792.

Merged to master via --no-ff at 666908d792f7079d3d8edec68cdea2e4c8fa1f3d.
dohertj2 closed this pull request 2026-07-13 19:30:08 -04:00
Some checks are pending
v2-ci / build (pull_request) Successful in 4m7s
v2-ci / unit-tests (pull_request) Failing after 10m50s

Pull request closed

Sign in to join this conversation.