diff options
author | Robert Newson <rnewson@apache.org> | 2017-05-09 15:14:11 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2017-05-09 15:14:11 +0100 |
commit | 69e1ce2b3e92f87c4b2ca19c182256d8f9ac1c92 (patch) | |
tree | 551d5006c08c18c3bd6845027166bcf9514818ff | |
parent | a18a2e5e5c40bb406f67f27b00bb3d206778aefd (diff) | |
download | couchdb-69e1ce2b3e92f87c4b2ca19c182256d8f9ac1c92.tar.gz |
Add stats, don't wipe cache on error
-rw-r--r-- | priv/stats_descriptions.cfg | 12 | ||||
-rw-r--r-- | src/jwks.erl | 31 | ||||
-rw-r--r-- | src/jwtf.app.src | 1 |
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 |