Gateway raw: warm reads refuse a tie cluster that fits under the learned ceiling (look-back below a reverse segment or bound lookup) #695
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Follow-up from #694 (review R1, master
66a2b0c3). Low–medium; not a regression: master before #694 refused more.Symptom: once the strict ceiling is learned (warm), a tie cluster of roughly 1,024 rows up to the ceiling, sitting in the 1 ms look-back just below a reverse-walk segment or a ReturnBounds bound lookup, is refused
BadTooManyOperations. The cold read of the same window succeeds.Traced cases (reviewer harness
ZzReviewFuzz694.cs,FUZZ694_ONLY=<seed>):Cause:
GatewayHistorianDataSource, ~:222) breaks as soon as the next doubled budget exceeds the known ceiling, without trying the largest budget that still fits.ReverseRawReader(~:107) retries only whenasked − PreWindowRows ≥ 1, measured against the current request rather than the ceiling.Suggested fix:
known − cap − 16and try once more.limit − m − 1from the ceiling, and allow one more shrink if m grew.dohertj2 referenced this issue2026-10-13 03:51:22 -04:00
Implemented: crowding re-reads clamp the allowance to the remaining learned-ceiling room and spend that final usable budget before refusing. Crowded reverse segments retry with a reduced in-window budget derived from the learned ceiling and observed pre-window rows. Regression tests cover ceilings 1709/1369 and reverse paging through a crowded millisecond. Ready in the pushed branch; this issue closes when PR #699 merges.
Pushed commit
97668d26; PR: #699.Full solution verified: 14,581 passed, 609 skipped, 0 failed across 62 suites (
dotnet test ZB.MOM.WW.OtOpcUa.slnx --verbosity quiet, exit 0). Independent final review found no important defects. New fixes have not been deployed or live-tested end to end through OPC UA.