Skip to content

Commit d965821

Browse files
carlhoerbergclaude
andcommitted
Fix message store crash when deleting non-existent files
Handle enoent errors gracefully in rabbit_msg_store:delete_file/2 to prevent vhost supervisor crashes. The garbage collector would crash with badmatch when attempting to delete files that were already removed, causing cascading failures that brought down entire vhosts. Changes: - Replace pattern match on file:delete/1 with case expression - Log debug message when file is already deleted (enoent) - Continue with cleanup even if file doesn't exist - Preserve existing error handling for other file deletion failures Fixes vhost supervisor shutdown due to message store GC failures. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 50357a0 commit d965821

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

deps/rabbit/src/rabbit_msg_store.erl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2123,9 +2123,17 @@ delete_file(File, State = #gc_state { file_summary_ets = FileSummaryEts,
21232123
[#file_summary{ valid_total_size = 0,
21242124
file_size = FileSize }] = ets:lookup(FileSummaryEts, File),
21252125
[] = scan_and_vacuum_message_file(File, State),
2126-
ok = file:delete(form_filename(Dir, filenum_to_name(File))),
2126+
Filename = form_filename(Dir, filenum_to_name(File)),
2127+
case file:delete(Filename) of
2128+
ok ->
2129+
rabbit_log:debug("Deleted empty file number ~tp; reclaimed ~tp bytes", [File, FileSize]);
2130+
{error, enoent} ->
2131+
rabbit_log:debug("File number ~tp (~ts) was already deleted; reclaimed ~tp bytes", [File, Filename, FileSize]);
2132+
{error, Reason} ->
2133+
rabbit_log:warning("Failed to delete file number ~tp (~ts): ~tp", [File, Filename, Reason]),
2134+
exit({failed_to_delete_file, File, Reason})
2135+
end,
21272136
true = ets:delete(FileSummaryEts, File),
2128-
rabbit_log:debug("Deleted empty file number ~tp; reclaimed ~tp bytes", [File, FileSize]),
21292137
ok
21302138
end.
21312139

0 commit comments

Comments
 (0)