fix(documents): improve rollback error handling in deleteOwnedDocument

Enhance error handling during document deletion by ensuring that failures
in restoring document ownership do not obscure the original error. Log
degraded events when ownership restoration fails after a deletion error,
providing additional context for debugging and monitoring. This change
improves reliability and traceability of document deletion operations.
This commit is contained in:
Richard R 2026-06-07 03:40:20 -06:00
parent 523774f549
commit 16fb5dd09c

View file

@ -7,6 +7,8 @@ import {
} from '@/lib/server/documents/previews';
import { deleteDocumentTtsSegmentCache } from '@/lib/server/tts/segments-cache';
import { withDocumentLock } from '@/lib/server/documents/document-lock';
import { hashForLog, serverLogger } from '@/lib/server/logger';
import { logDegraded } from '@/lib/server/errors/logging';
type DocumentRow = typeof documents.$inferSelect;
@ -66,7 +68,21 @@ export async function deleteOwnedDocument(input: {
}
}
} catch (error) {
await restoreDocumentOwnership(conn, removed);
// Best-effort rollback; never let a restore failure mask the original error.
try {
await restoreDocumentOwnership(conn, removed);
} catch (restoreError) {
logDegraded(serverLogger, {
event: 'documents.delete_owned.restore_ownership.failed',
msg: 'Failed to restore document ownership after deletion failure',
step: 'restore_document_ownership',
context: {
documentId: input.documentId,
userIdHash: hashForLog(input.userId),
},
error: restoreError,
});
}
throw error;
}