Commit 21b0b6f
authored
* revert: "fix(native): read mtime via BigInt nanoseconds to match Rust truncation (#1079)"
This reverts commit 3575880.
#1079 paid a real perf cost (BigInt-mode statSync on every file in change
detection) for what is in practice a no-op: at large epoch values, JS
Math.floor(stat.mtimeMs) can read N+1 where Rust wrote N, busting the
fast-skip optimization. But fast-skip only gates whether to re-hash the
file — when it misses, the hash is recomputed from contents and matches
what's stored, so the graph is byte-identical either way. The fix changes
optimization hit rate, not correctness.
The 0.026% miss-rate window the fix targeted does not justify the
constant-cost BigInt overhead applied to 100% of stat calls on the
change-detection hot path. Post-merge benchmark gate confirmed the
regression: no-op rebuild went from +70% (warning) to +108% (fail).
Reopens #1075. The right path is documenting that fast-skip is
best-effort (the on-disk hash is the source of truth for graph
correctness) rather than chasing exact integer parity with Rust.
* refactor(builder): floor mtime inside fileStat helper (#1080)
Encapsulate `Math.floor(stat.mtimeMs)` inside the `fileStat` helper so
every consumer of the integer DB column gets a pre-floored value by
default. Eliminates the risk that a future call site reads
`stat.mtimeMs` and stores it un-floored, which would silently write a
non-integer (or rounded-up integer) into the DB and cause spurious
fast-skip misses on the next build.
All six existing call sites simplified from `Math.floor(stat.mtimeMs)`
to `stat.mtime`. Behaviour unchanged.
Addresses Greptile P2 feedback on the revert PR.
1 parent 3575880 commit 21b0b6f
3 files changed
Lines changed: 20 additions & 75 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
225 | | - | |
| 225 | + | |
226 | 226 | | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
232 | 231 | | |
233 | 232 | | |
234 | 233 | | |
235 | | - | |
236 | | - | |
| 234 | + | |
| 235 | + | |
237 | 236 | | |
238 | 237 | | |
239 | 238 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| |||
389 | 389 | | |
390 | 390 | | |
391 | 391 | | |
392 | | - | |
| 392 | + | |
393 | 393 | | |
394 | 394 | | |
395 | 395 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | 10 | | |
12 | 11 | | |
13 | 12 | | |
| |||
63 | 62 | | |
64 | 63 | | |
65 | 64 | | |
66 | | - | |
| 65 | + | |
67 | 66 | | |
68 | 67 | | |
69 | 68 | | |
70 | | - | |
71 | | - | |
| 69 | + | |
| 70 | + | |
72 | 71 | | |
73 | 72 | | |
74 | 73 | | |
| |||
159 | 158 | | |
160 | 159 | | |
161 | 160 | | |
162 | | - | |
163 | | - | |
164 | | - | |
| 161 | + | |
| 162 | + | |
165 | 163 | | |
166 | 164 | | |
167 | 165 | | |
168 | 166 | | |
169 | | - | |
| 167 | + | |
170 | 168 | | |
171 | | - | |
| 169 | + | |
172 | 170 | | |
173 | 171 | | |
174 | 172 | | |
| |||
223 | 221 | | |
224 | 222 | | |
225 | 223 | | |
226 | | - | |
| 224 | + | |
227 | 225 | | |
228 | 226 | | |
229 | 227 | | |
230 | | - | |
231 | | - | |
| 228 | + | |
| 229 | + | |
232 | 230 | | |
233 | 231 | | |
234 | 232 | | |
| |||
278 | 276 | | |
279 | 277 | | |
280 | 278 | | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | 279 | | |
0 commit comments