AdminUI AbCip/AbLegacy driver forms drop unknown options and reset MaxConcurrentReads on save #576

Closed
opened 2026-10-07 19:11:02 -04:00 by dohertj2 · 1 comment
Owner

Found during the native AB transport AdminUI live gate (Task 19, branch feat/native-ab-transport); pre-existing, not fixed there.

  • AbCipDriverForm / AbLegacyDriverForm FromOptions/ToOptions drop unknown JSON keys on save — any driver option not modelled in the form is silently erased when an operator edits an unrelated field (the same defect class Task 19 fixed for transport).
  • AbCipDriverForm resets MaxConcurrentReads to 8 on every save.
  • Add a round-trip test per form: load a config containing every option + an unknown key, edit one field, save, assert everything else is preserved.
Found during the native AB transport AdminUI live gate (Task 19, branch `feat/native-ab-transport`); pre-existing, not fixed there. - [ ] `AbCipDriverForm` / `AbLegacyDriverForm` `FromOptions`/`ToOptions` drop unknown JSON keys on save — any driver option not modelled in the form is silently erased when an operator edits an unrelated field (the same defect class Task 19 fixed for `transport`). - [ ] `AbCipDriverForm` resets `MaxConcurrentReads` to 8 on every save. - [ ] Add a round-trip test per form: load a config containing every option + an unknown key, edit one field, save, assert everything else is preserved.
dohertj2 added the driver/abcipdriver/ablegacy labels 2026-10-07 19:11:02 -04:00
Author
Owner

Fixed: AbCip/AbLegacy forms overlay only the keys they edit (unknown keys survive); MaxConcurrentReads is a form field; also fixed the forms writing TimeSpan-string keys the factories never read — they now write timeoutMs/alarmPollIntervalMs/probe.intervalMs/probe.timeoutMs and migrate legacy keys. Live-verified on docker-dev (edit+save kept injected unknown keys; ms keys written). (merge 7105ef3e on master, pushed 2026-10-08)

Fixed: AbCip/AbLegacy forms overlay only the keys they edit (unknown keys survive); MaxConcurrentReads is a form field; also fixed the forms writing TimeSpan-string keys the factories never read — they now write timeoutMs/alarmPollIntervalMs/probe.intervalMs/probe.timeoutMs and migrate legacy keys. Live-verified on docker-dev (edit+save kept injected unknown keys; ms keys written). (merge `7105ef3e` on master, pushed 2026-10-08)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#576