You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2014/12/04 21:09:49 UTC
[18/22] couch commit: updated
refs/heads/2491-refactor-couch-httpd-auth to 3e8286d
Track the time spent executing validate_doc_update functions
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/be6ddf24
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/be6ddf24
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/be6ddf24
Branch: refs/heads/2491-refactor-couch-httpd-auth
Commit: be6ddf24f62550bddd1dced0903bb508188b210e
Parents: 3e32256
Author: Alexander Shorin <kx...@apache.org>
Authored: Fri Oct 31 00:40:09 2014 +0300
Committer: Alexander Shorin <kx...@apache.org>
Committed: Mon Nov 3 12:19:59 2014 +0300
----------------------------------------------------------------------
priv/stats_descriptions.cfg | 4 ++++
src/couch_db.erl | 29 +++++++++++++++++------------
2 files changed, 21 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/be6ddf24/priv/stats_descriptions.cfg
----------------------------------------------------------------------
diff --git a/priv/stats_descriptions.cfg b/priv/stats_descriptions.cfg
index 3f771d2..729fca1 100644
--- a/priv/stats_descriptions.cfg
+++ b/priv/stats_descriptions.cfg
@@ -186,3 +186,7 @@
{type, counter},
{desc, <<"number of rejections by validate_doc_update function">>}
]}.
+{[couchdb, query_server, vdu_process_time], [
+ {type, histogram},
+ {desc, <<"duration of validate_doc_update function calls">>}
+]}.
http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/be6ddf24/src/couch_db.erl
----------------------------------------------------------------------
diff --git a/src/couch_db.erl b/src/couch_db.erl
index b5ea64d..86b6558 100644
--- a/src/couch_db.erl
+++ b/src/couch_db.erl
@@ -582,18 +582,23 @@ validate_ddoc(DbName, DDoc) ->
end.
validate_doc_update_int(Db, Doc, GetDiskDocFun) ->
- DiskDoc = GetDiskDocFun(),
- JsonCtx = couch_util:json_user_ctx(Db),
- SecObj = get_security(Db),
- try [case Fun(Doc, DiskDoc, JsonCtx, SecObj) of
- ok -> ok;
- Error -> throw(Error)
- end || Fun <- Db#db.validate_doc_funs],
- ok
- catch
- throw:Error ->
- Error
- end.
+ Fun = fun() ->
+ DiskDoc = GetDiskDocFun(),
+ JsonCtx = couch_util:json_user_ctx(Db),
+ SecObj = get_security(Db),
+ try
+ [case Fun(Doc, DiskDoc, JsonCtx, SecObj) of
+ ok -> ok;
+ Error -> throw(Error)
+ end || Fun <- Db#db.validate_doc_funs],
+ ok
+ catch
+ throw:Error ->
+ Error
+ end
+ end,
+ couch_stats:update_histogram([couchdb, query_server, vdu_process_time],
+ Fun).
% to be safe, spawn a middleman here