summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-12-03 13:10:59 +0000
committerMatthew Sackman <matthew@lshift.net>2009-12-03 13:10:59 +0000
commit32f53ad4535a5a1055236bcd64c89afde4da996f (patch)
tree30672055c52e8c4382f83dea5ebab2c3f52b5545 /src
parent6b2bd295b04f74fcff1564f06f2e0777ad613458 (diff)
downloadrabbitmq-server-git-32f53ad4535a5a1055236bcd64c89afde4da996f.tar.gz
Some renaming in the fhc and associated changes in qi and ms.
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl29
-rw-r--r--src/rabbit_msg_store.erl10
-rw-r--r--src/rabbit_queue_index.erl5
3 files changed, 24 insertions, 20 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index ef201aee05..6007e554c5 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -119,8 +119,8 @@
-export([open/3, close/1, read/2, append/2, sync/1, position/2, truncate/1,
last_sync_offset/1, current_virtual_offset/1, current_raw_offset/1,
- append_write_buffer/1, copy/3, set_maximum_since_use/1, delete/1,
- discard_write_buffer/1]).
+ flush/1, copy/3, set_maximum_since_use/1, delete/1,
+ clear/1]).
-export([start_link/0, init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
@@ -190,12 +190,12 @@
-spec(last_sync_offset/1 :: (ref()) -> ({'ok', integer()} | error())).
-spec(current_virtual_offset/1 :: (ref()) -> ({'ok', integer()} | error())).
-spec(current_raw_offset/1 :: (ref()) -> ({'ok', integer()} | error())).
--spec(append_write_buffer/1 :: (ref()) -> ok_or_error()).
+-spec(flush/1 :: (ref()) -> ok_or_error()).
-spec(copy/3 :: (ref(), ref(), non_neg_integer()) ->
({'ok', integer()} | error())).
-spec(set_maximum_since_use/1 :: (non_neg_integer()) -> 'ok').
-spec(delete/1 :: (ref()) -> ok_or_error()).
--spec(discard_write_buffer/1 :: (ref()) -> ok_or_error()).
+-spec(clear/1 :: (ref()) -> ok_or_error()).
-endif.
@@ -343,7 +343,7 @@ current_virtual_offset(Ref) ->
current_raw_offset(Ref) ->
with_handles([Ref], fun ([Handle]) -> {ok, Handle #handle.offset} end).
-append_write_buffer(Ref) ->
+flush(Ref) ->
with_flushed_handles([Ref], fun ([Handle]) -> {ok, [Handle]} end).
copy(Src, Dest, Count) ->
@@ -376,14 +376,25 @@ delete(Ref) ->
end
end.
-discard_write_buffer(Ref) ->
+clear(Ref) ->
with_handles(
[Ref],
- fun ([#handle { write_buffer = [] }]) ->
+ fun ([#handle { at_eof = true, write_buffer_size = 0, offset = 0 }]) ->
ok;
([Handle = #handle { write_buffer_size = Size, offset = Offset }]) ->
- {ok, [Handle #handle { write_buffer = [], write_buffer_size = 0,
- offset = Offset - Size }]}
+ Handle1 =
+ Handle #handle { write_buffer = [], write_buffer_size = 0,
+ offset = Offset - Size },
+ case maybe_seek(bof, Handle1) of
+ {{ok, 0}, Handle2 = #handle { hdl = Hdl }} ->
+ case file:truncate(Hdl) of
+ ok -> {ok, [Handle2 #handle { at_eof = true,
+ trusted_offset = 0 }]};
+ Error -> {Error, [Handle2]}
+ end;
+ Error ->
+ {Error, [Handle1]}
+ end
end).
set_maximum_since_use(MaximumAge) ->
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index cdeee98c45..c21e4bd9da 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -299,11 +299,8 @@ handle_call({read, MsgId}, _From, State =
not_found ->
ok = case CurFile =:= File andalso {ok, Offset} >=
file_handle_cache:current_raw_offset(CurHdl) of
- true ->
- file_handle_cache:append_write_buffer(
- CurHdl);
- false ->
- ok
+ true -> file_handle_cache:flush(CurHdl);
+ false -> ok
end,
{Hdl, State2} = get_read_handle(File, State),
{ok, Offset} = file_handle_cache:position(Hdl, Offset),
@@ -736,8 +733,7 @@ recover_crashed_compactions1(Dir, FileNames, TmpFileName) ->
{ok, TmpHdl} = open_file(Dir, TmpFileName, ?READ_AHEAD_MODE),
{ok, TmpSize} = file_handle_cache:copy(TmpHdl, MainHdl, TmpSize),
ok = file_handle_cache:close(MainHdl),
- ok = file_handle_cache:close(TmpHdl),
- ok = file:delete(TmpPath),
+ ok = file_handle_cache:delete(TmpHdl),
{ok, _MainMessages, MsgIdsMain} =
scan_file_for_valid_messages_msg_ids(
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index bbd9508672..adc3f74286 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -266,10 +266,7 @@ flush_journal(State) ->
end
end, State1 #qistate { segments = dict:new() }, Segments),
{JournalHdl, State3} = get_journal_handle(State2),
- ok = file_handle_cache:discard_write_buffer(JournalHdl),
- {ok, 0} = file_handle_cache:position(JournalHdl, bof),
- ok = file_handle_cache:truncate(JournalHdl),
- ok = file_handle_cache:sync(JournalHdl),
+ ok = file_handle_cache:clear(JournalHdl),
State3 #qistate { dirty_count = 0 }.
read_segment_entries(InitSeqId, State) ->