Historian H2 follow-ups: CLI historyread --events, AdminUI capability matrix (no picker), Periodic vs PerEntry default mismatch #776

Closed
opened 2026-11-09 15:20:28 -05:00 by dohertj2 · 3 comments
Owner

Follow-ups from the Lane H2 historian remediation (#746) — its commit messages say these were "filed", but no Gitea issues existed:

  • Client.CLI has no historyread --events mode, which the B2 over-the-wire test asked for.
  • Capability matrix in the AdminUI historian backend picker — no picker exists (the backend is config-only), so the planned surfacing of TimeAverage/Total/HistoryUpdate support per backend has nowhere to go. Decide: add a read-only backend/capability panel, or drop the item.
  • Commit-mode default mismatch: the lane made Periodic(100 ms) the code default, but Host appsettings.json sets "CommitMode": "PerEntry", docker-dev defaults PerEntry, and Program.cs:~319 falls back to PerEntry on a bad value — effective behaviour is unchanged. Decide the intended default (Periodic trades ≤100 ms of crash loss for throughput) and align code/config/docs.
  • Process: the lane branch was never run against Host.Tests (a failing aggregate test slipped through). Check before merging any future remed lane.
Follow-ups from the Lane H2 historian remediation (#746) — its commit messages say these were "filed", but no Gitea issues existed: - **Client.CLI has no `historyread --events` mode**, which the B2 over-the-wire test asked for. - **Capability matrix in the AdminUI historian backend picker** — no picker exists (the backend is config-only), so the planned surfacing of TimeAverage/Total/HistoryUpdate support per backend has nowhere to go. Decide: add a read-only backend/capability panel, or drop the item. - **Commit-mode default mismatch:** the lane made `Periodic(100 ms)` the code default, but Host `appsettings.json` sets `"CommitMode": "PerEntry"`, docker-dev defaults PerEntry, and `Program.cs:~319` falls back to PerEntry on a bad value — effective behaviour is unchanged. Decide the intended default (Periodic trades ≤100 ms of crash loss for throughput) and align code/config/docs. - Process: the lane branch was never run against Host.Tests (a failing aggregate test slipped through). Check before merging any future remed lane.
dohertj2 added the type:followuppriority:p3 labels 2026-11-09 15:20:28 -05:00
Author
Owner

Item 1 done on master 380ec541: historyread --events (HistoryReadEvents on an event notifier; --fields with EventType in the default list, --of-type OfType filter; can't combine with --modified/--aggregate; follows continuation points up to --max; a Bad status fails the command). New HistoryReadEventsAsync on the shared client service + session adapter; Client.CLI 168, Client.Shared 240, Client.UI 130; over-the-wire test against the in-process server (default fields non-null, OfType filters, invalid where-clause → BadEventFilterInvalid). Docs: Client.CLI.md, Historian.md. Still open: item 2 (AdminUI capability matrix — no backend picker exists) and item 3 (Periodic vs PerEntry commit-mode default) are decisions.

Item 1 done on master 380ec541: `historyread --events` (HistoryReadEvents on an event notifier; --fields with EventType in the default list, --of-type OfType filter; can't combine with --modified/--aggregate; follows continuation points up to --max; a Bad status fails the command). New HistoryReadEventsAsync on the shared client service + session adapter; Client.CLI 168, Client.Shared 240, Client.UI 130; over-the-wire test against the in-process server (default fields non-null, OfType filters, invalid where-clause → BadEventFilterInvalid). Docs: Client.CLI.md, Historian.md. **Still open:** item 2 (AdminUI capability matrix — no backend picker exists) and item 3 (Periodic vs PerEntry commit-mode default) are decisions.
Author
Owner

Item 3 fixed on master c5df43d5: the ContinuousHistorizationOptions.CommitMode code default is now PerEntry (DefaultCommitMode), and Program.cs's bad-value fallback goes through the same ResolveCommitMode(), so code, Host appsettings, docker-dev and the fallback all agree. Effective behaviour is unchanged (it was already PerEntry everywhere). Periodic is documented as the opt-in that accepts up to CommitIntervalMs of crash loss in exchange for throughput (docs/Historian.md). Tests: the defaults test now pins PerEntry, and a new test checks that a garbage value falls back to the options default. Setting the default back to Periodic fails both. Release build 0 warnings; Runtime 982, Host 247, OpcUaServer.IntegrationTests 132.
Item 1 was done earlier (380ec541). Still open: item 2, an owner decision: add a read-only historian backend/capability panel in the AdminUI, or drop the item. Recommendation: drop it. The backend is config-only, and the capability matrix already lives in docs/Historian.md.

Item 3 fixed on master `c5df43d5`: the `ContinuousHistorizationOptions.CommitMode` code default is now `PerEntry` (`DefaultCommitMode`), and `Program.cs`'s bad-value fallback goes through the same `ResolveCommitMode()`, so code, Host appsettings, docker-dev and the fallback all agree. Effective behaviour is unchanged (it was already PerEntry everywhere). `Periodic` is documented as the opt-in that accepts up to `CommitIntervalMs` of crash loss in exchange for throughput (`docs/Historian.md`). Tests: the defaults test now pins PerEntry, and a new test checks that a garbage value falls back to the options default. Setting the default back to Periodic fails both. Release build 0 warnings; Runtime 982, Host 247, OpcUaServer.IntegrationTests 132. Item 1 was done earlier (`380ec541`). Still open: **item 2**, an owner decision: add a read-only historian backend/capability panel in the AdminUI, or drop the item. Recommendation: drop it. The backend is config-only, and the capability matrix already lives in docs/Historian.md.
Author
Owner

Owner decision 2026-11-09: item 2 (AdminUI historian capability panel) dropped — the backend is config-only and the capability matrix lives in docs/Historian.md. Items 1 and 3 are done (380ec541, c5df43d5). Closing.

**Owner decision 2026-11-09:** item 2 (AdminUI historian capability panel) **dropped** — the backend is config-only and the capability matrix lives in docs/Historian.md. Items 1 and 3 are done (380ec541, c5df43d5). Closing.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#776