summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-11-13 11:57:32 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-11-13 11:57:32 +0000
commitae2b78b00a2c6844dfe0e0d68136ba104de359b2 (patch)
tree873615b037c8221e2ee3312d85888659562c90bc
parent246e224e0fd4d49de6cccb9f76f365a729da0c61 (diff)
downloadrabbitmq-server-bug26457.tar.gz
Remove a couple of TODOs, make the read buffer size configurable, and don't use the read buffer for the QI or msg store transform since they already read in decent sized chunks.bug26457
-rw-r--r--src/file_handle_cache.erl14
-rw-r--r--src/rabbit_msg_store.erl3
2 files changed, 12 insertions, 5 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index 06a72aa4..2922e146 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -240,7 +240,8 @@
-spec(register_callback/3 :: (atom(), atom(), [any()]) -> 'ok').
-spec(open/3 ::
(file:filename(), [any()],
- [{'write_buffer', (non_neg_integer() | 'infinity' | 'unbuffered')}])
+ [{'write_buffer', (non_neg_integer() | 'infinity' | 'unbuffered')} |
+ {'read_buffer', (non_neg_integer() | 'unbuffered')}])
-> val_or_error(ref())).
-spec(close/1 :: (ref()) -> ok_or_error()).
-spec(read/2 :: (ref(), non_neg_integer()) ->
@@ -370,8 +371,8 @@ read(Ref, Count) ->
end;
eof ->
{eof, [Handle #handle { at_eof = true }]};
- Error -> %% TODO correct or change handle?
- {Error, [Handle]}
+ Error ->
+ {Error, [reset_read_buffer(Handle)]}
end
end).
@@ -768,6 +769,11 @@ new_closed_handle(Path, Mode, Options) ->
infinity -> infinity;
N when is_integer(N) -> N
end,
+ ReadBufferSize =
+ case proplists:get_value(read_buffer, Options, unbuffered) of
+ unbuffered -> 0;
+ N2 when is_integer(N2) -> N2
+ end,
Ref = make_ref(),
put({Ref, fhc_handle}, #handle { hdl = closed,
offset = 0,
@@ -776,7 +782,7 @@ new_closed_handle(Path, Mode, Options) ->
write_buffer_size_limit = WriteBufferSize,
write_buffer = [],
read_buffer_size = 0,
- read_buffer_size_limit = 1000000, %% TODO
+ read_buffer_size_limit = ReadBufferSize,
read_buffer = <<>>,
at_eof = false,
path = Path,
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index b829ae94..6c80ddcd 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -1299,7 +1299,8 @@ should_mask_action(CRef, MsgId,
open_file(Dir, FileName, Mode) ->
file_handle_cache:open(form_filename(Dir, FileName), ?BINARY_MODE ++ Mode,
- [{write_buffer, ?HANDLE_CACHE_BUFFER_SIZE}]).
+ [{write_buffer, ?HANDLE_CACHE_BUFFER_SIZE},
+ {read_buffer, ?HANDLE_CACHE_BUFFER_SIZE}]).
close_handle(Key, CState = #client_msstate { file_handle_cache = FHC }) ->
CState #client_msstate { file_handle_cache = close_handle(Key, FHC) };