summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-09-08 01:37:18 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2010-09-08 01:37:18 +0100
commit2969f6ad2a7d1192901dddbfa3bb1862a0295cd9 (patch)
treecdb22d106e63611bb643d9c19f3d8e86f8bb858c
parent861a14118826c0edb58fc26521819da0841e65e7 (diff)
downloadrabbitmq-server-git-2969f6ad2a7d1192901dddbfa3bb1862a0295cd9.tar.gz
Scan the file and remove from the index as necessary on file delete rather than index_delete_by_file
-rw-r--r--src/rabbit_msg_store.erl5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index 337f04ab62..f9345c0b33 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -1535,7 +1535,10 @@ delete_file_if_empty(File, State = #msstate {
end,
true = mark_handle_to_close(FileHandlesEts, File),
true = ets:delete(FileSummaryEts, File),
- ok = index_delete_by_file(File, State),
+ {ok, Messages, FileSize} =
+ scan_file_for_valid_messages(Dir, filenum_to_name(File)),
+ [index_delete(Guid, State) ||
+ {Guid, _TotalSize, _Offset} <- Messages],
State1 = close_handle(File, State),
ok = file:delete(form_filename(Dir, filenum_to_name(File))),
State1 #msstate { sum_file_size = SumFileSize - FileSize };