summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2017-05-09 15:14:11 +0100
committerRobert Newson <rnewson@apache.org>2017-05-09 15:14:11 +0100
commit69e1ce2b3e92f87c4b2ca19c182256d8f9ac1c92 (patch)
tree551d5006c08c18c3bd6845027166bcf9514818ff
parenta18a2e5e5c40bb406f67f27b00bb3d206778aefd (diff)
downloadcouchdb-69e1ce2b3e92f87c4b2ca19c182256d8f9ac1c92.tar.gz
Add stats, don't wipe cache on error
-rw-r--r--priv/stats_descriptions.cfg12
-rw-r--r--src/jwks.erl31
-rw-r--r--src/jwtf.app.src1
3 files changed, 30 insertions, 14 deletions
diff --git a/priv/stats_descriptions.cfg b/priv/stats_descriptions.cfg
new file mode 100644
index 000000000..7aa5cab5d
--- /dev/null
+++ b/priv/stats_descriptions.cfg
@@ -0,0 +1,12 @@
+{[jkws, hit], [
+ {type, counter},
+ {desc, <<"cache hit for JKWS key lookup">>}
+]}.
+{[jkws, miss], [
+ {type, counter},
+ {desc, <<"cache miss for JKWS key lookup">>}
+]}.
+{[jkws, latency], [
+ {type, histogram},
+ {desc, <<"distribution of latencies for calls to retrieve JKWS keys">>}
+]}.
diff --git a/src/jwks.erl b/src/jwks.erl
index 748c162d8..1c416dced 100644
--- a/src/jwks.erl
+++ b/src/jwks.erl
@@ -32,21 +32,25 @@
terminate/2
]).
-start_link(Url) ->
- gen_server:start_link({local, ?MODULE}, ?MODULE, Url, []).
+start_link(JWKSUrl) ->
+ gen_server:start_link({local, ?MODULE}, ?MODULE, JWKSUrl, []).
get_key(Pid, Kid) ->
case lookup(Kid) of
{ok, Key} ->
- %% couch_stats:increment_counter([jkws, hit]),
+ couch_stats:increment_counter([jkws, hit]),
{ok, Key};
{error, not_found} ->
- %% couch_stats:increment_counter([jkws, miss]),
+ couch_stats:increment_counter([jkws, miss]),
Url = gen_server:call(Pid, get_url),
- KeySet = get_keyset(Url),
- ok = gen_server:call(Pid, {replace_keyset, KeySet}),
- lookup(Kid)
+ case get_keyset(Url) of
+ {ok, KeySet} ->
+ ok = gen_server:call(Pid, {replace_keyset, KeySet}),
+ lookup(Kid);
+ {error, Reason} ->
+ {error, Reason}
+ end
end.
@@ -99,15 +103,14 @@ terminate(_Reason, _State) ->
get_keyset(Url) ->
ReqHeaders = [],
- %% T0 = os:timestamp(),
+ T0 = os:timestamp(),
case ibrowse:send_req(Url, ReqHeaders, get) of
{ok, "200", _RespHeaders, RespBody} ->
- %% Latency = timer:now_diff(os:timestamp(), T0) / 1000,
- %% couch_stats:update_histogram([jkws, latency], Latency),
- parse_keyset(RespBody);
- Else ->
- io:format("~p", [Else]),
- []
+ Latency = timer:now_diff(os:timestamp(), T0) / 1000,
+ couch_stats:update_histogram([jkws, latency], Latency),
+ {ok, parse_keyset(RespBody)};
+ _Else ->
+ {error, get_keyset_failed}
end.
diff --git a/src/jwtf.app.src b/src/jwtf.app.src
index 304bb9e0a..87d9aafba 100644
--- a/src/jwtf.app.src
+++ b/src/jwtf.app.src
@@ -18,6 +18,7 @@
kernel,
stdlib,
b64url,
+ couch_stats,
crypto,
jiffy,
public_key