Commit 75d25e2
fix: harden lazy-load reset and dedup against window reshape (PR review)
Address the follow-up review on the reconnect/revert fix (web + mobile):
- Stale in-flight load after reset: the reset cleared older pages but an in-flight
load only checked the thread key (unchanged on a same-thread reshape), so its
late result repopulated cleared state. Add a generation counter that bumps on
every reset; the load captures it and drops its result if it changed.
- Reset trigger now also fires when the live window SHRINKS (checkpoint revert
that removes rows without changing the oldest row), not only when the oldest id
changes (reconnect) — a pure append (same oldest, larger count) still keeps the
loaded pages. Fixes the revert cases on web and mobile.
- Empty page no longer churns: when dedup leaves nothing new, return without a new
array reference and stop, so an unadvanced cursor can't loop identical requests.
- Dedup against the full merged set (older + live) on both platforms.
Also add a server regression test proving the "unsequenced cursor hides sequenced
history" concern is a non-issue: NULL-sequence rows always sort oldest, so when
the oldest loaded row is unsequenced every sequenced row is already in the window
— the `sequence IS NULL` cursor reaches all older rows without stranding any.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 8c40dd5 commit 75d25e2
3 files changed
Lines changed: 199 additions & 56 deletions
File tree
- apps
- mobile/src/state
- server/src/orchestration/Layers
- web/src/components
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | 116 | | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
125 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
126 | 151 | | |
127 | 152 | | |
128 | 153 | | |
129 | 154 | | |
130 | | - | |
| 155 | + | |
131 | 156 | | |
132 | 157 | | |
133 | 158 | | |
| |||
138 | 163 | | |
139 | 164 | | |
140 | 165 | | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | 166 | | |
146 | 167 | | |
147 | 168 | | |
| |||
158 | 179 | | |
159 | 180 | | |
160 | 181 | | |
| 182 | + | |
161 | 183 | | |
162 | 184 | | |
163 | 185 | | |
164 | 186 | | |
165 | 187 | | |
166 | 188 | | |
167 | 189 | | |
168 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
169 | 193 | | |
170 | 194 | | |
171 | 195 | | |
172 | 196 | | |
173 | 197 | | |
174 | 198 | | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
186 | 212 | | |
187 | 213 | | |
188 | 214 | | |
189 | 215 | | |
190 | | - | |
| 216 | + | |
191 | 217 | | |
192 | | - | |
193 | | - | |
194 | 218 | | |
195 | 219 | | |
196 | 220 | | |
| |||
199 | 223 | | |
200 | 224 | | |
201 | 225 | | |
202 | | - | |
203 | 226 | | |
204 | 227 | | |
205 | 228 | | |
| |||
Lines changed: 97 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1309 | 1309 | | |
1310 | 1310 | | |
1311 | 1311 | | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
| 1360 | + | |
| 1361 | + | |
| 1362 | + | |
| 1363 | + | |
| 1364 | + | |
| 1365 | + | |
| 1366 | + | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
| 1370 | + | |
| 1371 | + | |
| 1372 | + | |
| 1373 | + | |
| 1374 | + | |
| 1375 | + | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
| 1379 | + | |
| 1380 | + | |
| 1381 | + | |
| 1382 | + | |
| 1383 | + | |
| 1384 | + | |
| 1385 | + | |
| 1386 | + | |
| 1387 | + | |
| 1388 | + | |
| 1389 | + | |
| 1390 | + | |
| 1391 | + | |
| 1392 | + | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
1312 | 1409 | | |
1313 | 1410 | | |
1314 | 1411 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1702 | 1702 | | |
1703 | 1703 | | |
1704 | 1704 | | |
1705 | | - | |
1706 | | - | |
1707 | 1705 | | |
1708 | | - | |
1709 | | - | |
1710 | | - | |
1711 | | - | |
1712 | 1706 | | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
1713 | 1724 | | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
1714 | 1740 | | |
1715 | 1741 | | |
1716 | 1742 | | |
1717 | 1743 | | |
1718 | | - | |
| 1744 | + | |
1719 | 1745 | | |
1720 | 1746 | | |
1721 | 1747 | | |
| |||
1729 | 1755 | | |
1730 | 1756 | | |
1731 | 1757 | | |
1732 | | - | |
1733 | | - | |
1734 | | - | |
1735 | | - | |
1736 | | - | |
1737 | 1758 | | |
1738 | 1759 | | |
1739 | 1760 | | |
| |||
1750 | 1771 | | |
1751 | 1772 | | |
1752 | 1773 | | |
| 1774 | + | |
1753 | 1775 | | |
1754 | 1776 | | |
1755 | 1777 | | |
1756 | 1778 | | |
1757 | 1779 | | |
1758 | 1780 | | |
1759 | 1781 | | |
1760 | | - | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
1761 | 1785 | | |
1762 | 1786 | | |
1763 | 1787 | | |
1764 | 1788 | | |
1765 | 1789 | | |
1766 | 1790 | | |
1767 | | - | |
1768 | | - | |
1769 | | - | |
1770 | | - | |
1771 | | - | |
1772 | | - | |
1773 | | - | |
1774 | | - | |
1775 | | - | |
1776 | | - | |
1777 | | - | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
1778 | 1804 | | |
1779 | 1805 | | |
1780 | 1806 | | |
1781 | 1807 | | |
1782 | | - | |
| 1808 | + | |
1783 | 1809 | | |
1784 | | - | |
1785 | | - | |
1786 | 1810 | | |
1787 | 1811 | | |
1788 | 1812 | | |
| |||
1791 | 1815 | | |
1792 | 1816 | | |
1793 | 1817 | | |
1794 | | - | |
1795 | 1818 | | |
1796 | 1819 | | |
1797 | 1820 | | |
| |||
0 commit comments