summaryrefslogtreecommitdiff
path: root/src/rabbit_msg_file.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-12-16 19:14:53 +0000
committerMatthew Sackman <matthew@lshift.net>2009-12-16 19:14:53 +0000
commitd7424357ff5d05d3307ff491c761befdf18ad95c (patch)
tree80a49eae9205188674fe69313268e0307b57c60e /src/rabbit_msg_file.erl
parent2cef7bbf99a623f978a6fe7f987f01b2460f0306 (diff)
downloadrabbitmq-server-d7424357ff5d05d3307ff491c761befdf18ad95c.tar.gz
Added accountancy for file size and sums thereof plus sums of valid data. This simplifies build_index slightly and complicates remove_message slightly. Also found that in delete_if_empty, was failing to close any file handle open on the file prior to it being deleted.
Diffstat (limited to 'src/rabbit_msg_file.erl')
-rw-r--r--src/rabbit_msg_file.erl6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/rabbit_msg_file.erl b/src/rabbit_msg_file.erl
index c0826159..bf367ede 100644
--- a/src/rabbit_msg_file.erl
+++ b/src/rabbit_msg_file.erl
@@ -59,7 +59,7 @@
-spec(read/2 :: (io_device(), msg_size()) ->
({'ok', {msg_id(), msg()}} | {'error', any()})).
-spec(scan/1 :: (io_device()) ->
- {'ok', [{msg_id(), msg_size(), position()}]}).
+ {'ok', [{msg_id(), msg_size(), position()}], position()}).
-endif.
@@ -95,14 +95,14 @@ scan(FileHdl) -> scan(FileHdl, 0, []).
scan(FileHdl, Offset, Acc) ->
case read_next(FileHdl, Offset) of
- eof -> {ok, Acc};
+ eof -> {ok, Acc, Offset};
{corrupted, NextOffset} ->
scan(FileHdl, NextOffset, Acc);
{ok, {MsgId, TotalSize, NextOffset}} ->
scan(FileHdl, NextOffset, [{MsgId, TotalSize, Offset} | Acc]);
_KO ->
%% bad message, but we may still have recovered some valid messages
- {ok, Acc}
+ {ok, Acc, Offset}
end.
read_next(FileHdl, Offset) ->