summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2021-02-04 01:22:18 +0300
committerMichael Klishin <michael@clojurewerkz.org>2021-02-04 01:22:18 +0300
commitf431573268673b208953a6257d44c0067d3f0d6d (patch)
tree1bbd3e62a771c7c7185ca2b1307cfa5cdec55f7e
parent83ae131dea242b3194840459367d9907dc9f9cdc (diff)
downloadrabbitmq-server-git-mk-bump-cache-gen-server-call-timeout.tar.gz
Bump gen_server:call timeuts for rabbitmq_auth_backend_cache operationsmk-bump-cache-gen-server-call-timeout
as we have seen with channel operation timeouts, 5s is too low under load spikes.
-rw-r--r--deps/rabbitmq_auth_backend_cache/include/rabbit_auth_backend_cache.hrl9
-rw-r--r--deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl8
-rw-r--r--deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl16
-rw-r--r--deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl8
-rw-r--r--deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl4
5 files changed, 35 insertions, 10 deletions
diff --git a/deps/rabbitmq_auth_backend_cache/include/rabbit_auth_backend_cache.hrl b/deps/rabbitmq_auth_backend_cache/include/rabbit_auth_backend_cache.hrl
new file mode 100644
index 0000000000..e59e65c14c
--- /dev/null
+++ b/deps/rabbitmq_auth_backend_cache/include/rabbit_auth_backend_cache.hrl
@@ -0,0 +1,9 @@
+%% This Source Code Form is subject to the terms of the Mozilla Public
+%% License, v. 2.0. If a copy of the MPL was not distributed with this
+%% file, You can obtain one at https://mozilla.org/MPL/2.0/.
+%%
+%% Copyright (c) 2007-2021 VMware, Inc. or its affiliates. All rights reserved.
+%%
+
+%% Same as default channel operation timeout.
+-define(CACHE_OPERATION_TIMEOUT, 15000).
diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl
index 3a769be338..a3ff7feb37 100644
--- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl
+++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl
@@ -12,6 +12,8 @@
-behaviour(rabbit_auth_cache).
+-include("include/rabbit_auth_backend_cache.hrl").
+
-export([start_link/0,
get/1, put/3, delete/1]).
@@ -20,9 +22,11 @@
start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
-get(Key) -> gen_server:call(?MODULE, {get, Key}).
+get(Key) -> gen_server:call(?MODULE, {get, Key}, ?CACHE_OPERATION_TIMEOUT).
+
put(Key, Value, TTL) -> gen_server:cast(?MODULE, {put, Key, Value, TTL}).
-delete(Key) -> gen_server:call(?MODULE, {delete, Key}).
+
+delete(Key) -> gen_server:call(?MODULE, {delete, Key}, ?CACHE_OPERATION_TIMEOUT).
init(_Args) -> {ok, nostate}.
diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl
index dc5320f924..e988686e8e 100644
--- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl
+++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl
@@ -10,6 +10,8 @@
-compile({no_auto_import,[get/1]}).
-compile({no_auto_import,[put/2]}).
+-include("include/rabbit_auth_backend_cache.hrl").
+
-behaviour(rabbit_auth_cache).
-export([start_link/0,
@@ -18,17 +20,23 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--record(state, {cache, timers, ttl}).
+-record(state, {
+ cache,
+ timers,
+ ttl
+}).
start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
-get(Key) -> gen_server:call(?MODULE, {get, Key}).
+get(Key) -> gen_server:call(?MODULE, {get, Key}, ?CACHE_OPERATION_TIMEOUT).
+
put(Key, Value, TTL) ->
Expiration = rabbit_auth_cache:expiration(TTL),
gen_server:cast(?MODULE, {put, Key, Value, TTL, Expiration}).
-delete(Key) -> gen_server:call(?MODULE, {delete, Key}).
-init(_Args) ->
+delete(Key) -> gen_server:call(?MODULE, {delete, Key}, ?CACHE_OPERATION_TIMEOUT).
+
+init([]) ->
{ok, #state{cache = ets:new(?MODULE, [set, private]),
timers = ets:new(auth_cache_ets_timers, [set, private])}}.
diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl
index 0db7fe6ded..230dd6c2ac 100644
--- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl
+++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl
@@ -16,6 +16,8 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
+-include("include/rabbit_auth_backend_cache.hrl").
+
-record(state, {
segments = [],
gc_timer,
@@ -32,13 +34,13 @@ get(Key) ->
put(Key, Value, TTL) ->
Expiration = rabbit_auth_cache:expiration(TTL),
- Segment = gen_server:call(?MODULE, {get_write_segment, Expiration}),
+ Segment = gen_server:call(?MODULE, {get_write_segment, Expiration}, ?CACHE_OPERATION_TIMEOUT),
ets:insert(Segment, {Key, {Expiration, Value}}),
ok.
delete(Key) ->
[ets:delete(Table, Key)
- || Table <- gen_server:call(?MODULE, get_segment_tables)].
+ || Table <- gen_server:call(?MODULE, get_segment_tables, ?CACHE_OPERATION_TIMEOUT)].
gc() ->
case whereis(?MODULE) of
@@ -96,7 +98,7 @@ maybe_add_segment(Expiration, SegmentSize, OldSegments) ->
end.
get_from_segments(Key) ->
- Tables = gen_server:call(?MODULE, get_segment_tables),
+ Tables = gen_server:call(?MODULE, get_segment_tables, ?CACHE_OPERATION_TIMEOUT),
lists:flatmap(
fun(undefined) -> [];
(T) ->
diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl
index afea5d6561..79f60f1057 100644
--- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl
+++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl
@@ -9,6 +9,8 @@
-behaviour(gen_server).
-behaviour(rabbit_auth_cache).
+-include("include/rabbit_auth_backend_cache.hrl").
+
-export([start_link/1,
get/1, put/3, delete/1]).
-export([gc/0]).
@@ -90,7 +92,7 @@ segment(Expiration, SegmentSize) ->
End.
add_segment(Segment) ->
- gen_server:call(?MODULE, {add_segment, Segment}).
+ gen_server:call(?MODULE, {add_segment, Segment}, ?CACHE_OPERATION_TIMEOUT).
do_add_segment(Segment) ->
case ets:lookup(?SEGMENT_TABLE, Segment) of