summaryrefslogtreecommitdiff
path: root/src
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
commit830c24a4928b0ef968e205195aa2b0128d1e662c (patch)
tree873615b037c8221e2ee3312d85888659562c90bc /src
parentabebb6517d14610bb0ee31f28ee3f10efaeb4154 (diff)
downloadrabbitmq-server-git-830c24a4928b0ef968e205195aa2b0128d1e662c.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.
Diffstat (limited to 'src')
-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 06a72aa45d..2922e146a8 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 b829ae9476..6c80ddcd2c 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) };