files partitions: no deadlock, four ahead, and a failure no longer stops the GC sweep
Creating a partition deadlocked with file inserts 11 times in an hour, and each failure ended the GC sweep before its deletes. The parent is now locked first (lock_timeout 10 s), four partitions are kept ahead, and an error is logged while the sweep goes on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e3e3ecc93d
commit
f8ee7e8662
3 files changed
+29
-10
No files matched your search
@@ -79,8 +79,15 @@ export default class GcScheduler extends BaseCommand {
|
||||
}
|
||||
}
|
||||
|
||||
// Inserts fail without a partition for their id (D39).
|
||||
if (!this.dryRun) await FilePartitions.ensure()
|
||||
// Inserts fail without a partition for their id (D39). Four are kept ahead, so a failure here
|
||||
// can wait for the next sweep; it used to end the sweep, deletes and all (LOG.md 2026-10-07 (4)).
|
||||
if (!this.dryRun) {
|
||||
try {
|
||||
await FilePartitions.ensure()
|
||||
} catch (err: any) {
|
||||
this.logger.error(`files partitions: ${err.message}; trying again next sweep.`)
|
||||
}
|
||||
}
|
||||
|
||||
const trimmed = await this.trimBodyQueue()
|
||||
if (trimmed) this.logger.info(`Body queue: ${this.verb('drop', 'dropped')} ${trimmed} oldest waiting jobs.`)
|
||||
|
||||
Reference in new issue
Block a user