You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2016/08/25 03:22:05 UTC
couch-mrview commit: updated refs/heads/3060-handle-multi-query to
c5d9c1a
Repository: couchdb-couch-mrview
Updated Branches:
refs/heads/3060-handle-multi-query [created] c5d9c1a54
Properly handle multi-query streaming of results
After commit:
https://github.com/apache/couchdb-couch-mrview/commit/3ce28641c85af0d5054df47e9ac7de917a9d33cd
Started to sometimes skip sending meta (in case when rows came before it).
However did not consider the case of multiple queries which would produce a
sequence of these callbacks:
`meta` , `row`, ... , `complete`, `meta`, `row`, ..., `complete`
After a row was sent, because of the new `row_sent=true` flag, the meta from a
subsequent query result was skipped as well.
To fix, make sure to reset `row_sent=false` in after each `complete`.
Jira: COUCHDB-3060
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/c5d9c1a5
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/tree/c5d9c1a5
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/diff/c5d9c1a5
Branch: refs/heads/3060-handle-multi-query
Commit: c5d9c1a54dfae418e1124375a6c8ae789063eaa3
Parents: 157132c
Author: Nick Vatamaniuc <va...@apache.org>
Authored: Wed Aug 24 23:17:00 2016 -0400
Committer: Nick Vatamaniuc <va...@apache.org>
Committed: Wed Aug 24 23:17:00 2016 -0400
----------------------------------------------------------------------
src/couch_mrview_http.erl | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/blob/c5d9c1a5/src/couch_mrview_http.erl
----------------------------------------------------------------------
diff --git a/src/couch_mrview_http.erl b/src/couch_mrview_http.erl
index 3a9aa33..07c5f74 100644
--- a/src/couch_mrview_http.erl
+++ b/src/couch_mrview_http.erl
@@ -373,16 +373,16 @@ view_cb({row, Row}, Acc) ->
view_cb(complete, #vacc{resp=undefined}=Acc) ->
% Nothing in view
{ok, Resp} = chttpd:send_json(Acc#vacc.req, 200, {[{rows, []}]}),
- {ok, Acc#vacc{resp=Resp}};
+ {ok, Acc#vacc{resp=Resp, row_sent=false}};
view_cb(complete, #vacc{resp=Resp, buffer=Buf, threshold=Max}=Acc) ->
% Finish view output and possibly end the response
{ok, Resp1} = chttpd:close_delayed_json_object(Resp, Buf, "\r\n]}", Max),
case Acc#vacc.should_close of
true ->
{ok, Resp2} = chttpd:end_delayed_json_response(Resp1),
- {ok, Acc#vacc{resp=Resp2}};
+ {ok, Acc#vacc{resp=Resp2, row_sent=false}};
_ ->
- {ok, Acc#vacc{resp=Resp1, prepend=",\r\n", buffer=[], bufsize=0}}
+ {ok, Acc#vacc{resp=Resp1, row_sent=false, prepend=",\r\n", buffer=[], bufsize=0}}
end;
view_cb({error, Reason}, #vacc{resp=undefined}=Acc) ->
{ok, Resp} = chttpd:send_error(Acc#vacc.req, Reason),