Page MenuHomePhabricator

Correct the interaction between overheating and offset-based paging
ClosedPublic

Authored by epriestley on Aug 22 2019, 3:16 AM.
Tags
None
Referenced Files
F18659004: D20728.id49420.diff
Tue, Sep 23, 9:24 AM
F18642335: D20728.diff
Thu, Sep 18, 11:34 PM
F18567291: D20728.id.diff
Sep 9 2025, 3:39 PM
F18519366: D20728.diff
Sep 5 2025, 4:29 PM
F18107717: D20728.id49421.diff
Aug 11 2025, 2:36 AM
F17947875: D20728.id.diff
Jul 31 2025, 7:08 PM
F17936510: D20728.diff
Jul 31 2025, 12:22 AM
F17825353: D20728.id49421.diff
Jul 26 2025, 6:20 AM
Subscribers
None

Details

Summary

Ref T13386. If you issue differential.query with a large offset (like 3000), it can overheat regardless of policy filtering and fail with a nonsensical error message.

This is because the overheating limit is based only on the query limit, not on the offset.

For example, querying for "limit = 100" will never examine more than 1,100 rows, so a query with "limit = 100, offset = 3000" will always fail (provided there are at least that many revisions).

Not all numbers work like you might expect them to becuase there's also a 1024-row fetch window, but basically small limits plus big offsets always fail.

Test Plan

Artificially reduced the internal window size from 1024 to 5, then ran differential.query with offset=50 and limit=3. Before: overheated with weird error message. After: clean result.

Diff Detail

Repository
rP Phabricator
Branch
overheat1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 23278
Build 31984: Run Core Tests
Build 31983: arc lint + arc unit

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Aug 22 2019, 3:27 AM
This revision was automatically updated to reflect the committed changes.