You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2019/10/01 18:08:30 UTC
[couchdb] 07/08: Pass request_ctx in chttpd_auth_cache
This is an automated email from the ASF dual-hosted git repository.
iilyak pushed a commit to branch opentracing
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit a269f192d788969fda2d2849706fdd3f95c94a36
Author: ILYA Khlopotov <ii...@apache.org>
AuthorDate: Tue Oct 1 16:10:09 2019 +0000
Pass request_ctx in chttpd_auth_cache
---
src/chttpd/src/chttpd_auth_cache.erl | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/src/chttpd/src/chttpd_auth_cache.erl b/src/chttpd/src/chttpd_auth_cache.erl
index 9eee196..5c99354 100644
--- a/src/chttpd/src/chttpd_auth_cache.erl
+++ b/src/chttpd/src/chttpd_auth_cache.erl
@@ -38,12 +38,12 @@ start_link() ->
get_user_creds(Req, UserName) when is_list(UserName) ->
get_user_creds(Req, ?l2b(UserName));
-get_user_creds(_Req, UserName) when is_binary(UserName) ->
+get_user_creds(Req, UserName) when is_binary(UserName) ->
Resp = case couch_auth_cache:get_admin(UserName) of
nil ->
- get_from_cache(UserName);
+ get_from_cache(Req, UserName);
Props ->
- case get_from_cache(UserName) of
+ case get_from_cache(Req, UserName) of
nil ->
Props;
UserProps when is_list(UserProps) ->
@@ -53,9 +53,10 @@ get_user_creds(_Req, UserName) when is_binary(UserName) ->
end,
maybe_validate_user_creds(Resp).
-update_user_creds(_Req, UserDoc, _Ctx) ->
+update_user_creds(#httpd{request_ctx = RequestCtx}, UserDoc, _Ctx) ->
+ Options = [?ADMIN_CTX, {request_ctx, RequestCtx}],
{_, Ref} = spawn_monitor(fun() ->
- {ok, Db} = fabric2_db:open(dbname(), [?ADMIN_CTX]),
+ {ok, Db} = fabric2_db:open(dbname(), Options),
case fabric2_db:update_doc(Db, UserDoc) of
{ok, _} ->
exit(ok);
@@ -70,7 +71,7 @@ update_user_creds(_Req, UserDoc, _Ctx) ->
Else
end.
-get_from_cache(UserName) ->
+get_from_cache(Req, UserName) ->
try ets_lru:lookup_d(?CACHE, UserName) of
{ok, Props} ->
couch_stats:increment_counter([couchdb, auth_cache_hits]),
@@ -78,7 +79,7 @@ get_from_cache(UserName) ->
Props;
_ ->
maybe_increment_auth_cache_miss(UserName),
- case load_user_from_db(UserName) of
+ case load_user_from_db(Req, UserName) of
nil ->
nil;
Props ->
@@ -88,7 +89,7 @@ get_from_cache(UserName) ->
catch
error:badarg ->
maybe_increment_auth_cache_miss(UserName),
- load_user_from_db(UserName)
+ load_user_from_db(Req, UserName)
end.
maybe_increment_auth_cache_miss(UserName) ->
@@ -211,8 +212,9 @@ handle_config_terminate(_Server, _Reason, _State) ->
erlang:send_after(?RELISTEN_DELAY, Dst, restart_config_listener).
-load_user_from_db(UserName) ->
- {ok, Db} = fabric2_db:open(dbname(), [?ADMIN_CTX]),
+load_user_from_db(#httpd{request_ctx = RequestCtx}, UserName) ->
+ Options = [?ADMIN_CTX, {request_ctx, RequestCtx}],
+ {ok, Db} = fabric2_db:open(dbname(), Options),
try fabric2_db:open_doc(Db, docid(UserName), [conflicts]) of
{ok, Doc} ->
{Props} = couch_doc:to_json_obj(Doc, []),