Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 28529200B7C for ; Thu, 25 Aug 2016 05:27:24 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 26E76160AC1; Thu, 25 Aug 2016 03:27:24 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 6E7F1160AB1 for ; Thu, 25 Aug 2016 05:27:23 +0200 (CEST) Received: (qmail 5483 invoked by uid 500); 25 Aug 2016 03:27:22 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 5474 invoked by uid 99); 25 Aug 2016 03:27:22 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Aug 2016 03:27:22 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 77202DFB89; Thu, 25 Aug 2016 03:27:22 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vatamane@apache.org To: commits@couchdb.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: couch-mrview commit: updated refs/heads/3060-handle-multi-query to 0cc75c1 [Forced Update!] Date: Thu, 25 Aug 2016 03:27:22 +0000 (UTC) archived-at: Thu, 25 Aug 2016 03:27:24 -0000 Repository: couchdb-couch-mrview Updated Branches: refs/heads/3060-handle-multi-query c5d9c1a54 -> 0cc75c1db (forced update) Properly handle multi-query streaming of results After commit: https://github.com/apache/couchdb-couch-mrview/commit/3ce28641c85af0d5054df47e9ac7de917a9d33cd In view_cb if rows came before meta, set the row_sent=true flag did not send meta after that. That made sense for a single query. However, in case of multiple queries, which could produce this sequence of callbacks: meta , row, ... , complete, meta, row, ..., complete Second meta won't be sent because row_sent flag remains true. So 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/0cc75c1d Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/tree/0cc75c1d Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-mrview/diff/0cc75c1d Branch: refs/heads/3060-handle-multi-query Commit: 0cc75c1dba5946ad7b405069e0bbb3734d225081 Parents: 157132c Author: Nick Vatamaniuc Authored: Wed Aug 24 23:17:00 2016 -0400 Committer: Nick Vatamaniuc Committed: Wed Aug 24 23:26:52 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/0cc75c1d/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),