Joseph Doherty
68461fbfb6
test(historian): justify/tighten the shutdown watch window; single read of RemoveCallCount per poll
2026-08-17 05:39:52 -04:00
Joseph Doherty
120e885b31
test(s7): assert the stale handle is disposed, not just replaced, in the cancellation-reopen pins
2026-08-17 05:39:47 -04:00
Joseph Doherty
1979cf4119
fix(acl): stamp the generation on Shard so a rollover racer cannot serve a stale-generation verdict; eviction-swap capacity hint
2026-08-17 05:37:56 -04:00
Joseph Doherty
8946644bb1
test(sql): reap >24h-old orphaned test databases at fixture startup (AdminUI + Configuration prefixes)
2026-08-17 05:37:22 -04:00
Joseph Doherty
9f09a62ad2
fix(docker-dev): guard the deploy POST against transport-level curl failure; bound both curls with --max-time
2026-08-17 05:37:04 -04:00
Joseph Doherty
45d670928a
test(historian): replace the recorder tests' fixed sleeps with bounded watches on drain-pass and truncation observables
2026-08-17 05:35:30 -04:00
Joseph Doherty
4f86073333
test(s7): pin the span/multi-var cancellation reopen contract, one-bad-decode-in-chunk, and multi-var shape mismatch
2026-08-17 05:33:45 -04:00
Joseph Doherty
a61b3c98a2
chore(docker-dev): readiness-gated deploy.sh + Traefik access log for the first-POST 404
2026-08-17 05:32:44 -04:00
Joseph Doherty
1edfc263ec
docs(mtconnect): state AsStream's buffer aliasing and lifetime contract
2026-08-17 05:31:28 -04:00
Joseph Doherty
248d998a79
docs(plan): perf follow-ups round 2 — ACL rollover window, S7 coverage + TM/CT live pin, historian bounded watches, test-DB reaper, docker-dev readiness gate
2026-08-17 05:28:24 -04:00
Joseph Doherty
7bb888bed1
Merge branch 'perf/followups' — follow-up register closed: per-driver overrun meter, drain-cancellation + ACL eviction + alarm-tracking fixes, SQL-Server-backed test pins, MTConnect XmlReader streaming, S7 multi-var leftovers; S7 + docker-dev live gates PASSED
v2-ci / build (push) Successful in 5m10s
v2-ci / unit-tests (push) Failing after 16m0s
2026-08-17 05:01:59 -04:00
Joseph Doherty
0b3972864a
docs(plan): record the close-out docs commit SHA in the follow-ups ledger
2026-08-17 04:43:09 -04:00
Joseph Doherty
07fd17a34e
docs(plan): perf follow-ups close-out — outcomes, live-gate evidence, register annotations
2026-08-17 04:42:51 -04:00
Joseph Doherty
7c5a843ace
docs(code): close-out comment fixes from the follow-ups review round
2026-08-17 04:32:53 -04:00
Joseph Doherty
57c66416d8
test(s7): live-gate span reads + multi-var leftovers against the s7_1500 fixture
2026-08-17 04:24:39 -04:00
Joseph Doherty
6b46c485ef
test(historian): bounded-wait durability read; honest nondeterminism notes on the #491 controls
2026-08-17 04:07:08 -04:00
Joseph Doherty
20022083df
perf(s7): span leftovers batch through multi-var read PDUs with per-chunk fallback
2026-08-17 04:05:42 -04:00
Joseph Doherty
5ae430237f
fix(alarms): background tasks register before they start; volatile _disposed
2026-08-17 04:04:45 -04:00
Joseph Doherty
cda82c074e
perf(mtconnect): stream sample-chunk parsing through XmlReader; no per-chunk document tree
2026-08-17 03:57:16 -04:00
Joseph Doherty
d884934593
fix(acl): shard eviction swaps the shard object so _globalCount cannot over-subtract; concurrency stress test
2026-08-17 03:55:13 -04:00
Joseph Doherty
97902d6879
fix(drivers): overrun-meter tag keys align with the Meter's snake_case convention (driver_type/driver_instance)
2026-08-17 03:54:53 -04:00
Joseph Doherty
c149410ba3
test(adminui): SQL-Server-backed pins for the drift watermark aggregate and the rename scan's collation widening
2026-08-17 03:53:16 -04:00
Joseph Doherty
7870c91fe4
fix(historian): a shutdown cancellation mid-drain is a pass abort, not a per-tag failure
2026-08-17 03:52:55 -04:00
Joseph Doherty
dba5f806d3
fix(runtime): explicit 30s command timeout on the Direct-apply artifact read
2026-08-17 03:49:27 -04:00
Joseph Doherty
6ee553cf8f
feat(s7): expose ReadMultipleVarsAsync through the IS7Plc seam
2026-08-17 03:48:15 -04:00
Joseph Doherty
c4d8e4a200
fix(acl): revalidation memo rejects empty node identifiers, mirroring the authorizer's guard
2026-08-17 03:47:19 -04:00
Joseph Doherty
e22ecea008
feat(drivers): per-driver poll-overrun meter on the shared OtOpcUa Meter; NoteOverrun + backoffCap doc notes
2026-08-17 03:46:27 -04:00
Joseph Doherty
acb3772426
fix(s7): validate span-read options at parse time; document the over-PDU degradation
2026-08-17 03:45:14 -04:00
Joseph Doherty
f06cbe16d9
docs(plan): perf follow-ups — 15-task plan off the remainder's follow-up register
2026-08-17 03:41:40 -04:00
Joseph Doherty
e40a038527
Merge branch 'perf/roadmap-remainder' — 28-task perf remainder: historian batching, ACL cache re-shape, driver round-trips, alarm coalescing, AdminUI hot spots, off-mailbox apply
2026-08-17 03:18:36 -04:00
Joseph Doherty
c8a7014388
fix(alarms): replacement drainer starts on a fresh stack; honest bounds in the latch comments
2026-08-16 05:57:05 -04:00
Joseph Doherty
cd010c7165
docs(plan): commit the execution ledger's final state
2026-08-16 05:41:34 -04:00
Joseph Doherty
445bb855e2
fix: release the alarm drain latch on escape; cancel before disposing the page poll timers
2026-08-16 05:40:27 -04:00
Joseph Doherty
b9e9df4081
docs(code): honest rationales — Akka restart semantics, per-key shards, EF literal inlining; retire or annotate orphaned members
2026-08-16 05:33:33 -04:00
Joseph Doherty
dbc9223206
docs(code): correct comments stale after the perf remainder
2026-08-16 05:09:00 -04:00
Joseph Doherty
e75bb38734
docs: perf roadmap remainder — outcomes + follow-up register
2026-08-16 05:08:53 -04:00
Joseph Doherty
451273c860
test(historian): pin the failed-batch-append branch; correct its loss-accounting docs
...
The batched ingest's append-failure catch had zero coverage, and two doc
statements overstated the loss: the Warning said the burst's values were
"dropped", and RecorderStatus.OutboxAppendFailures said "the value was
dropped, not recorded". The outbox contract is prefix-never-orphan, so a
partial-prefix failure leaves entries durably queued that drain normally.
- New test pins the branch: one 3-item burst whose group commit commits a
1-entry prefix then throws => OutboxAppendFailures == 1 (per burst, not
per value), TotalRecorded == 0, actor alive, and the prefix still reaches
the writer via the post-failure DrainTick (drainInterval 30s, so the
steady cadence cannot account for it). Falsified twice: counting per item
and dropping the drain nudge each turn it red.
- Second test pins the OperationCanceledException filter from its
observable side - a cancel that is NOT shutdown is metered, not swallowed.
Removing the 'when (_lifetime.IsCancellationRequested)' turns it red. The
shutdown side has no cheap seam (the counter dies with the actor).
- Docs corrected: OutboxAppendFailures counts FAILED BATCH APPENDS, one per
burst whatever its size (a granularity change from the per-value era), and
is not a count of values lost; TotalRecorded under-counts when a commit
fails after a partial prefix. Log message says "failed to append" and
names the prefix. No functional change beyond the message string.
Also folds in the DrainBatchSize default alignment behind 0298a0b9 : the
recorder's two ctor defaults and its non-positive fallback still said 64
while ContinuousHistorizationOptions.DrainBatchSize now defaults to 1024.
No test pinned the old 64.
2026-08-16 04:50:30 -04:00
Joseph Doherty
0298a0b944
chore(historian): batch-era defaults + appsettings/doc alignment
2026-08-16 04:48:55 -04:00
Joseph Doherty
5b92eb0ff6
perf(runtime): direct-mode artifact read piped off the host mailbox
2026-08-16 04:48:02 -04:00
Joseph Doherty
ca87329a83
fix(adminui): dedup + chunk the rename script-scan OR-chain
2026-08-16 04:36:03 -04:00
Joseph Doherty
485f4ea1e8
test(polling): tolerate one scheduler blip in the fast-reader overrun control
2026-08-16 04:35:01 -04:00
Joseph Doherty
384568b47a
perf(historian): batch ingest — one group commit per value burst
2026-08-16 04:33:35 -04:00
Joseph Doherty
aad7583b79
test(acl): pin TranslateBrowsePath survivor order through the compaction
2026-08-16 04:29:27 -04:00
Joseph Doherty
b6275f439c
perf(runtime): per-driver index for connectivity fans; comms-loss is one batch
2026-08-16 04:27:20 -04:00
Joseph Doherty
9cf400f1e8
perf(drivers): fixed-rate poll pacing with overrun counter; non-blocking unsubscribe
2026-08-16 04:26:20 -04:00
Joseph Doherty
684e59d871
perf(adminui): drift chip recomposes only when the config-edit watermark moves
2026-08-16 04:25:56 -04:00
Joseph Doherty
d5f573b019
fix(abcip): single-flight cold-connect per device — backoff survives the parallel read window
2026-08-16 04:24:59 -04:00
Joseph Doherty
fe8d132c64
perf(adminui): rename script scan filters server-side, stops shipping every script body
2026-08-16 04:24:10 -04:00
Joseph Doherty
a76b4e0740
perf(historian): bounded-parallel per-tag drain (DrainConcurrency, default 8)
2026-08-16 04:21:18 -04:00
Joseph Doherty
d8a17f2e34
perf(acl): authorizer hot path — cache lookup before scope build, lazy deny reasons
2026-08-16 04:19:47 -04:00