Problem
When execution runs with ERIGON_IN_MEM_HISTORY=false, TemporalMemBatch.GetAsOf returns an error for non-receipt domains because the in-memory batch cannot answer historical reads. HistorySeek forwards the same result.
Overlay read views consult this DomainReader before their backing temporal transaction. Both MemoryMutation.GetAsOf / HistorySeek and OverlayTemporalReadView.GetAsOf / HistorySeek currently propagate every reader error, so they never fall through to the backing transaction even though it holds the committed history. RPC requests using a temporal overlay view can therefore fail only while an overlay is published.
The existing error-propagation behavior is otherwise important: a real DomainReader failure must not be converted into a miss and answered with stale committed data.
This is separate from #22118, which was fixed by #22460. That issue concerned a commitment state reader leaking between execution batches; this issue concerns the intended fallback behavior of an RPC overlay read view.
Proposed direction
- Represent disabled in-memory history with a typed error or an explicit capability. Do not match the current error text.
- Fall through to the backing temporal transaction only when the in-memory reader explicitly reports that history is unavailable.
- Continue propagating every other
DomainReader error.
- Apply the same rule to
GetAsOf and HistorySeek on both overlay read-view implementations.
Acceptance criteria
Related
Problem
When execution runs with
ERIGON_IN_MEM_HISTORY=false,TemporalMemBatch.GetAsOfreturns an error for non-receipt domains because the in-memory batch cannot answer historical reads.HistorySeekforwards the same result.Overlay read views consult this
DomainReaderbefore their backing temporal transaction. BothMemoryMutation.GetAsOf/HistorySeekandOverlayTemporalReadView.GetAsOf/HistorySeekcurrently propagate every reader error, so they never fall through to the backing transaction even though it holds the committed history. RPC requests using a temporal overlay view can therefore fail only while an overlay is published.The existing error-propagation behavior is otherwise important: a real
DomainReaderfailure must not be converted into a miss and answered with stale committed data.This is separate from #22118, which was fixed by #22460. That issue concerned a commitment state reader leaking between execution batches; this issue concerns the intended fallback behavior of an RPC overlay read view.
Proposed direction
DomainReadererror.GetAsOfandHistorySeekon both overlay read-view implementations.Acceptance criteria
DomainReadererrors still reach the caller.MemoryMutationandOverlayTemporalReadView, and fail before the fix.Related