diff options
| author | Matthew Sackman <matthew@lshift.net> | 2009-12-03 13:10:59 +0000 |
|---|---|---|
| committer | Matthew Sackman <matthew@lshift.net> | 2009-12-03 13:10:59 +0000 |
| commit | 32f53ad4535a5a1055236bcd64c89afde4da996f (patch) | |
| tree | 30672055c52e8c4382f83dea5ebab2c3f52b5545 /src | |
| parent | 6b2bd295b04f74fcff1564f06f2e0777ad613458 (diff) | |
| download | rabbitmq-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.erl | 29 | ||||
| -rw-r--r-- | src/rabbit_msg_store.erl | 10 | ||||
| -rw-r--r-- | src/rabbit_queue_index.erl | 5 |
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) -> |
