You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ch...@apache.org on 2014/03/26 00:39:00 UTC

couch-mrview commit: updated refs/heads/1993-bigcouch-couch-mrview to 25fb687

Repository: couchdb-couch-mrview
Updated Branches:
  refs/heads/1993-bigcouch-couch-mrview f407a9e0f -> 25fb6879c


Expose list_cb and provide json_req_obj indirection

This exposes the list_cb function for external use, specifically for
chttpd_show. This also adds an indirection layer for fetching
json_req_obj so that we can use list_cb for views that are local as
well as those not on the current node.


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/commit/25fb6879
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/tree/25fb6879
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/diff/25fb6879

Branch: refs/heads/1993-bigcouch-couch-mrview
Commit: 25fb6879c808d6f5b0cf2b02a6b8693919c63433
Parents: f407a9e
Author: Russell Branca <ch...@gmail.com>
Authored: Tue Mar 25 16:05:11 2014 -0700
Committer: Russell Branca <ch...@gmail.com>
Committed: Tue Mar 25 16:05:11 2014 -0700

----------------------------------------------------------------------
 src/couch_mrview_show.erl | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/blob/25fb6879/src/couch_mrview_show.erl
----------------------------------------------------------------------
diff --git a/src/couch_mrview_show.erl b/src/couch_mrview_show.erl
index 0b42da5..6937467 100644
--- a/src/couch_mrview_show.erl
+++ b/src/couch_mrview_show.erl
@@ -15,7 +15,8 @@
 -export([
     handle_doc_show_req/3,
     handle_doc_update_req/3,
-    handle_view_list_req/3
+    handle_view_list_req/3,
+    list_cb/2
 ]).
 
 -include_lib("couch/include/couch_db.hrl").
@@ -251,7 +252,7 @@ list_cb(complete, Acc) ->
 
 start_list_resp(Head, Acc) ->
     #lacc{db=Db, req=Req, qserver=QServer, lname=LName} = Acc,
-    JsonReq = couch_httpd_external:json_req_obj(Req, Db),
+    JsonReq = json_req_obj(Req, Db),
 
     [<<"start">>,Chunk,JsonResp] = couch_query_servers:ddoc_proc_prompt(QServer,
         [<<"lists">>, LName], [Head, JsonReq]),
@@ -361,3 +362,13 @@ json_apply_field({Key, NewValue}, [], Acc) ->
     % end of list, add ours
     {[{Key, NewValue}|Acc]}.
 
+
+% This loads the db info if we have a fully loaded db record, but we might not
+% have the db locally on this node, so then load the info through fabric.
+json_req_obj(Req, #db{main_pid=Pid}=Db) when is_pid(Pid) ->
+    couch_httpd_external:json_req_obj(Req, Db);
+json_req_obj(Req, Db) ->
+    % use a separate process because we're already in a receive loop, and
+    % json_req_obj calls fabric:get_db_info()
+    spawn_monitor(fun() -> exit(chttpd_external:json_req_obj(Req, Db)) end),
+    receive {'DOWN', _, _, _, JsonReq} -> JsonReq end.