178nPFgfyyeGf2vtNRpL0w changeset

Changeset623631626365 (b)
ParentNone (a)
ab
0+diff --git a/src/couchdb/couch_view_updater.erl b/src/couchdb/couch_view_updater.erl
0+index 51f06b4..73a61fc 100644
0+--- a/src/couchdb/couch_view_updater.erl
0++++ b/src/couchdb/couch_view_updater.erl
0+@@ -166,16 +166,17 @@ do_maps(#group{query_server = Qs} = Group, MapQueue, WriteQueue) ->
0+         couch_work_queue:close(WriteQueue),
0+         couch_query_servers:stop_doc_map(Group#group.query_server);
0+     {ok, Queue} ->
0+-        lists:foreach(
0+-            fun({Seq, #doc{id = Id, deleted = true}}) ->
0++        Items = lists:foldl(
0++            fun({Seq, #doc{id = Id, deleted = true}}, Acc) ->
0+                 Item = {Seq, Id, []},
0+-                ok = couch_work_queue:queue(WriteQueue, Item);
0+-            ({Seq, #doc{id = Id, deleted = false} = Doc}) ->
0++                [Item | Acc];
0++            ({Seq, #doc{id = Id, deleted = false} = Doc}, Acc) ->
0+                 {ok, Result} = couch_query_servers:map_doc_raw(Qs, Doc),
0+                 Item = {Seq, Id, Result},
0+-                ok = couch_work_queue:queue(WriteQueue, Item)
0++                [Item | Acc]
0+             end,
0+-            Queue),
0++            [], Queue),
0++        ok = couch_work_queue:queue(WriteQueue, Items),
0+         do_maps(Group, MapQueue, WriteQueue)
0+     end.
0+ 
0+@@ -183,7 +184,8 @@ do_writes(Parent, Owner, Group, WriteQueue, InitialBuild, ViewEmptyKVs) ->
0+     case couch_work_queue:dequeue(WriteQueue) of
0+     closed ->
0+         Parent ! {new_group, Group};
0+-    {ok, Queue} ->
0++    {ok, Queue0} ->
0++        Queue = lists:flatten(Queue0),
0+         {ViewKVs, DocIdViewIdKeys} = lists:foldr(
0+             fun({_Seq, Id, []}, {ViewKVsAcc, DocIdViewIdKeysAcc}) ->
0+                 {ViewKVsAcc, [{Id, []} | DocIdViewIdKeysAcc]};
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
--- Revision None
+++ Revision 623631626365
@@ -0,0 +1,38 @@
+diff --git a/src/couchdb/couch_view_updater.erl b/src/couchdb/couch_view_updater.erl
+index 51f06b4..73a61fc 100644
+--- a/src/couchdb/couch_view_updater.erl
++++ b/src/couchdb/couch_view_updater.erl
+@@ -166,16 +166,17 @@ do_maps(#group{query_server = Qs} = Group, MapQueue, WriteQueue) ->
+ couch_work_queue:close(WriteQueue),
+ couch_query_servers:stop_doc_map(Group#group.query_server);
+ {ok, Queue} ->
+- lists:foreach(
+- fun({Seq, #doc{id = Id, deleted = true}}) ->
++ Items = lists:foldl(
++ fun({Seq, #doc{id = Id, deleted = true}}, Acc) ->
+ Item = {Seq, Id, []},
+- ok = couch_work_queue:queue(WriteQueue, Item);
+- ({Seq, #doc{id = Id, deleted = false} = Doc}) ->
++ [Item | Acc];
++ ({Seq, #doc{id = Id, deleted = false} = Doc}, Acc) ->
+ {ok, Result} = couch_query_servers:map_doc_raw(Qs, Doc),
+ Item = {Seq, Id, Result},
+- ok = couch_work_queue:queue(WriteQueue, Item)
++ [Item | Acc]
+ end,
+- Queue),
++ [], Queue),
++ ok = couch_work_queue:queue(WriteQueue, Items),
+ do_maps(Group, MapQueue, WriteQueue)
+ end.
+
+@@ -183,7 +184,8 @@ do_writes(Parent, Owner, Group, WriteQueue, InitialBuild, ViewEmptyKVs) ->
+ case couch_work_queue:dequeue(WriteQueue) of
+ closed ->
+ Parent ! {new_group, Group};
+- {ok, Queue} ->
++ {ok, Queue0} ->
++ Queue = lists:flatten(Queue0),
+ {ViewKVs, DocIdViewIdKeys} = lists:foldr(
+ fun({_Seq, Id, []}, {ViewKVsAcc, DocIdViewIdKeysAcc}) ->
+ {ViewKVsAcc, [{Id, []} | DocIdViewIdKeysAcc]};