Skip to content

BugReport: cover fetch range accounting in the cache - #665

Draft
michalhosna wants to merge 1 commit into
mainfrom
mh/cache-empty-fetch-gap
Draft

BugReport: cover fetch range accounting in the cache#665
michalhosna wants to merge 1 commit into
mainfrom
mh/cache-empty-fetch-gap

Conversation

@michalhosna

@michalhosna michalhosna commented Sep 2, 2026

Copy link
Copy Markdown
Member

Two tests in their own target, one per rule:

  • a fetch stream that FINs with no object bounds its non-existence inference at the Largest Location in FETCH_OK; the range past that Largest resolves against upstream;
  • a whole-group fetch (End Location object 0, §10.12.1) on a track the cache does not hold keeps every object it delivered.

Problems:

  • The cold path in MoqxCache::fetch passes the spec-encoded end {0,0} straight into FetchWriteback and FetchRangeIterator. The warm path normalizes it to an exclusive {1,0} first. The iterator ends where it starts, so each later object's gap marking wipes the previous one. All three objects are cached, only the last one is served.
  • FetchWriteback::endOfFetch marks gaps up to the iterator's end and never consults the upstream FETCH_OK End Location. The TODO in fetchUpstream already names this.

This change is Reviewable

Two tests in their own target, one per rule:

- a fetch stream that FINs with no object bounds its non-existence
  inference at the Largest Location in FETCH_OK (§10.12.3); the range
  past that Largest resolves against upstream;
- a whole-group fetch (End Location object 0, §10.12.1) on a track the
  cache does not hold keeps every object it delivered.

Both fail on this revision.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant