Skip to content

Commit 30809c1

Browse files
Digidaiclaude
andcommitted
fix: cleanup cron deletes only successfully cleaned entries + sync CLI version to 1.8.0
- Cron raw cleanup: track individual R2 delete successes and only remove corresponding ingest_log entries (was: bulk delete all entries even if some R2 deletes failed, losing retry opportunity) - CLI version string: 1.7.0 → 1.8.0 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f9e4a8c commit 30809c1

2 files changed

Lines changed: 7 additions & 9 deletions

File tree

src/cli/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ async function main() {
5555
case 'version':
5656
case '--version':
5757
case '-v':
58-
console.log('mails v1.7.0')
58+
console.log('mails v1.8.0')
5959
break
6060
default:
6161
console.error(`Unknown command: ${command}`)

worker/src/index.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -393,20 +393,18 @@ export default {
393393
const parsed = await env.DB.prepare(
394394
'SELECT id, raw_key FROM ingest_log WHERE status = ? AND created_at < ? AND raw_key != ?'
395395
).bind('parsed', rawCutoff, '').all<{ id: string; raw_key: string }>()
396-
let deleted = 0
396+
const cleanedIds: string[] = []
397397
for (const row of parsed.results ?? []) {
398398
try {
399399
await env.ATTACHMENTS.delete(row.raw_key)
400-
deleted++
400+
cleanedIds.push(row.id)
401401
} catch {
402-
// R2 delete failures are non-critical
402+
// R2 delete failures are non-critical — retry next cron run
403403
}
404404
}
405-
// Remove cleaned ingest_log entries
406-
if (deleted > 0) {
407-
await env.DB.prepare(
408-
'DELETE FROM ingest_log WHERE status = ? AND created_at < ? AND raw_key != ?'
409-
).bind('parsed', rawCutoff, '').run()
405+
// Remove only ingest_log entries whose R2 blobs were successfully deleted
406+
for (const cleanedId of cleanedIds) {
407+
await env.DB.prepare('DELETE FROM ingest_log WHERE id = ?').bind(cleanedId).run()
410408
}
411409
console.log(`Raw cleanup: deleted ${deleted} raw email blobs older than 30 days`)
412410
} catch (err) {

0 commit comments

Comments
 (0)