This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch fdb-mango-indexes
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/fdb-mango-indexes by this push:
     new a1d7265  code clean up
a1d7265 is described below

commit a1d726557f64d9ed4bdba36601f4060856e51934
Author: Garren Smith <[email protected]>
AuthorDate: Wed Feb 19 13:51:21 2020 +0200

    code clean up
---
 src/couch_views/src/couch_views_indexer.erl |   5 +
 src/couch_views/src/couch_views_server.erl  |   2 +-
 src/fabric/include/fabric2.hrl.orig         |  67 ----------
 src/fabric/include/fabric2_BACKUP_15496.hrl |  67 ----------
 src/fabric/include/fabric2_BASE_15496.hrl   |  62 ---------
 src/fabric/include/fabric2_LOCAL_15496.hrl  |  63 ---------
 src/fabric/include/fabric2_REMOTE_15496.hrl |  63 ---------
 src/fabric/src/fabric2_db.erl               |  24 ++--
 src/fabric/src/fabric2_fdb.erl              |  14 +-
 src/mango/src/mango_app.erl                 |   1 -
 src/mango/src/mango_crud.erl                |  37 +-----
 src/mango/src/mango_cursor_view.erl         | 192 ++--------------------------
 src/mango/src/mango_fdb.erl                 |   5 +-
 src/mango/src/mango_httpd.erl               |   3 +-
 src/mango/src/mango_idx.erl                 |  42 +++---
 src/mango/src/mango_idx_view.hrl            |   1 -
 src/mango/src/mango_jobs_indexer.erl        |  47 +------
 src/mango/src/mango_util.erl                |   9 --
 src/mango/test/02-basic-find-test.py        |   2 +-
 19 files changed, 77 insertions(+), 629 deletions(-)

diff --git a/src/couch_views/src/couch_views_indexer.erl 
b/src/couch_views/src/couch_views_indexer.erl
index 1e9da99..29e3920 100644
--- a/src/couch_views/src/couch_views_indexer.erl
+++ b/src/couch_views/src/couch_views_indexer.erl
@@ -18,6 +18,7 @@
 
 
 -export([
+    set_timeout/0,
     init/0,
     fetch_docs/2
 ]).
@@ -35,6 +36,10 @@ spawn_link() ->
     proc_lib:spawn_link(?MODULE, init, []).
 
 
+set_timeout() ->
+    couch_views_jobs:set_timeout().
+
+
 init() ->
     {ok, Job, Data0} = couch_jobs:accept(?INDEX_JOB_TYPE, #{}),
     Data = upgrade_data(Data0),
diff --git a/src/couch_views/src/couch_views_server.erl 
b/src/couch_views/src/couch_views_server.erl
index 1a8caf3..b07c85f 100644
--- a/src/couch_views/src/couch_views_server.erl
+++ b/src/couch_views/src/couch_views_server.erl
@@ -41,7 +41,7 @@ start_link(Opts) ->
 init(Opts) ->
     WorkerModule = couch_util:get_value(worker, Opts, couch_views_indexer),
     process_flag(trap_exit, true),
-    couch_views_jobs:set_timeout(),
+    WorkerModule:set_timeout(),
     St = #{
         workers => #{},
         max_workers => max_workers(),
diff --git a/src/fabric/include/fabric2.hrl.orig 
b/src/fabric/include/fabric2.hrl.orig
deleted file mode 100644
index 61cd4b3..0000000
--- a/src/fabric/include/fabric2.hrl.orig
+++ /dev/null
@@ -1,67 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
-
--define(uint2bin(I), binary:encode_unsigned(I, little)).
--define(bin2uint(I), binary:decode_unsigned(I, little)).
--define(METADATA_VERSION_KEY, <<16#FF, "/metadataVersion">>).
-
-% Prefix Definitions
-
-% Layer Level: (LayerPrefix, X, ...)
-
--define(CLUSTER_CONFIG, 0).
--define(ALL_DBS, 1).
--define(DBS, 15).
--define(TX_IDS, 255).
-
-% Database Level: (LayerPrefix, ?DBS, DbPrefix, X, ...)
-
--define(DB_VERSION, 0).
--define(DB_CONFIG, 16).
--define(DB_STATS, 17).
--define(DB_ALL_DOCS, 18).
--define(DB_CHANGES, 19).
--define(DB_REVS, 20).
--define(DB_DOCS, 21).
--define(DB_LOCAL_DOCS, 22).
--define(DB_ATTS, 23).
--define(DB_VIEWS, 24).
--define(DB_LOCAL_DOC_BODIES, 25).
--define(DB_ATT_NAMES, 26).
-<<<<<<< HEAD
--define(DB_SEARCH, 27).
-=======
--define(DB_MANGO, 27).
->>>>>>> very rough indexing and return docs
-
-
-% Versions
-
-% 0 - Initial implementation
-% 1 - Added attachment hash
-
--define(CURR_REV_FORMAT, 1).
-
-% Misc constants
-
--define(PDICT_DB_KEY, '$fabric_db_handle').
--define(PDICT_LAYER_CACHE, '$fabric_layer_id').
--define(PDICT_CHECKED_DB_IS_CURRENT, '$fabric_checked_db_is_current').
--define(PDICT_CHECKED_MD_IS_CURRENT, '$fabric_checked_md_is_current').
--define(PDICT_TX_ID_KEY, '$fabric_tx_id').
--define(PDICT_TX_RES_KEY, '$fabric_tx_result').
--define(PDICT_ON_COMMIT_FUN, '$fabric_on_commit_fun').
--define(COMMIT_UNKNOWN_RESULT, 1021).
-
-
--define(BINARY_CHUNK_SIZE, 100000).
diff --git a/src/fabric/include/fabric2_BACKUP_15496.hrl 
b/src/fabric/include/fabric2_BACKUP_15496.hrl
deleted file mode 100644
index 61cd4b3..0000000
--- a/src/fabric/include/fabric2_BACKUP_15496.hrl
+++ /dev/null
@@ -1,67 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
-
--define(uint2bin(I), binary:encode_unsigned(I, little)).
--define(bin2uint(I), binary:decode_unsigned(I, little)).
--define(METADATA_VERSION_KEY, <<16#FF, "/metadataVersion">>).
-
-% Prefix Definitions
-
-% Layer Level: (LayerPrefix, X, ...)
-
--define(CLUSTER_CONFIG, 0).
--define(ALL_DBS, 1).
--define(DBS, 15).
--define(TX_IDS, 255).
-
-% Database Level: (LayerPrefix, ?DBS, DbPrefix, X, ...)
-
--define(DB_VERSION, 0).
--define(DB_CONFIG, 16).
--define(DB_STATS, 17).
--define(DB_ALL_DOCS, 18).
--define(DB_CHANGES, 19).
--define(DB_REVS, 20).
--define(DB_DOCS, 21).
--define(DB_LOCAL_DOCS, 22).
--define(DB_ATTS, 23).
--define(DB_VIEWS, 24).
--define(DB_LOCAL_DOC_BODIES, 25).
--define(DB_ATT_NAMES, 26).
-<<<<<<< HEAD
--define(DB_SEARCH, 27).
-=======
--define(DB_MANGO, 27).
->>>>>>> very rough indexing and return docs
-
-
-% Versions
-
-% 0 - Initial implementation
-% 1 - Added attachment hash
-
--define(CURR_REV_FORMAT, 1).
-
-% Misc constants
-
--define(PDICT_DB_KEY, '$fabric_db_handle').
--define(PDICT_LAYER_CACHE, '$fabric_layer_id').
--define(PDICT_CHECKED_DB_IS_CURRENT, '$fabric_checked_db_is_current').
--define(PDICT_CHECKED_MD_IS_CURRENT, '$fabric_checked_md_is_current').
--define(PDICT_TX_ID_KEY, '$fabric_tx_id').
--define(PDICT_TX_RES_KEY, '$fabric_tx_result').
--define(PDICT_ON_COMMIT_FUN, '$fabric_on_commit_fun').
--define(COMMIT_UNKNOWN_RESULT, 1021).
-
-
--define(BINARY_CHUNK_SIZE, 100000).
diff --git a/src/fabric/include/fabric2_BASE_15496.hrl 
b/src/fabric/include/fabric2_BASE_15496.hrl
deleted file mode 100644
index b4dd084..0000000
--- a/src/fabric/include/fabric2_BASE_15496.hrl
+++ /dev/null
@@ -1,62 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
-
--define(uint2bin(I), binary:encode_unsigned(I, little)).
--define(bin2uint(I), binary:decode_unsigned(I, little)).
--define(METADATA_VERSION_KEY, <<16#FF, "/metadataVersion">>).
-
-% Prefix Definitions
-
-% Layer Level: (LayerPrefix, X, ...)
-
--define(CLUSTER_CONFIG, 0).
--define(ALL_DBS, 1).
--define(DBS, 15).
--define(TX_IDS, 255).
-
-% Database Level: (LayerPrefix, ?DBS, DbPrefix, X, ...)
-
--define(DB_VERSION, 0).
--define(DB_CONFIG, 16).
--define(DB_STATS, 17).
--define(DB_ALL_DOCS, 18).
--define(DB_CHANGES, 19).
--define(DB_REVS, 20).
--define(DB_DOCS, 21).
--define(DB_LOCAL_DOCS, 22).
--define(DB_ATTS, 23).
--define(DB_VIEWS, 24).
--define(DB_LOCAL_DOC_BODIES, 25).
--define(DB_ATT_NAMES, 26).
-
-
-% Versions
-
-% 0 - Initial implementation
-% 1 - Added attachment hash
-
--define(CURR_REV_FORMAT, 1).
-
-% Misc constants
-
--define(PDICT_DB_KEY, '$fabric_db_handle').
--define(PDICT_LAYER_CACHE, '$fabric_layer_id').
--define(PDICT_CHECKED_DB_IS_CURRENT, '$fabric_checked_db_is_current').
--define(PDICT_CHECKED_MD_IS_CURRENT, '$fabric_checked_md_is_current').
--define(PDICT_TX_ID_KEY, '$fabric_tx_id').
--define(PDICT_TX_RES_KEY, '$fabric_tx_result').
--define(PDICT_ON_COMMIT_FUN, '$fabric_on_commit_fun').
--define(COMMIT_UNKNOWN_RESULT, 1021).
-
-
--define(BINARY_CHUNK_SIZE, 100000).
diff --git a/src/fabric/include/fabric2_LOCAL_15496.hrl 
b/src/fabric/include/fabric2_LOCAL_15496.hrl
deleted file mode 100644
index 828a51b..0000000
--- a/src/fabric/include/fabric2_LOCAL_15496.hrl
+++ /dev/null
@@ -1,63 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
-
--define(uint2bin(I), binary:encode_unsigned(I, little)).
--define(bin2uint(I), binary:decode_unsigned(I, little)).
--define(METADATA_VERSION_KEY, <<16#FF, "/metadataVersion">>).
-
-% Prefix Definitions
-
-% Layer Level: (LayerPrefix, X, ...)
-
--define(CLUSTER_CONFIG, 0).
--define(ALL_DBS, 1).
--define(DBS, 15).
--define(TX_IDS, 255).
-
-% Database Level: (LayerPrefix, ?DBS, DbPrefix, X, ...)
-
--define(DB_VERSION, 0).
--define(DB_CONFIG, 16).
--define(DB_STATS, 17).
--define(DB_ALL_DOCS, 18).
--define(DB_CHANGES, 19).
--define(DB_REVS, 20).
--define(DB_DOCS, 21).
--define(DB_LOCAL_DOCS, 22).
--define(DB_ATTS, 23).
--define(DB_VIEWS, 24).
--define(DB_LOCAL_DOC_BODIES, 25).
--define(DB_ATT_NAMES, 26).
--define(DB_SEARCH, 27).
-
-
-% Versions
-
-% 0 - Initial implementation
-% 1 - Added attachment hash
-
--define(CURR_REV_FORMAT, 1).
-
-% Misc constants
-
--define(PDICT_DB_KEY, '$fabric_db_handle').
--define(PDICT_LAYER_CACHE, '$fabric_layer_id').
--define(PDICT_CHECKED_DB_IS_CURRENT, '$fabric_checked_db_is_current').
--define(PDICT_CHECKED_MD_IS_CURRENT, '$fabric_checked_md_is_current').
--define(PDICT_TX_ID_KEY, '$fabric_tx_id').
--define(PDICT_TX_RES_KEY, '$fabric_tx_result').
--define(PDICT_ON_COMMIT_FUN, '$fabric_on_commit_fun').
--define(COMMIT_UNKNOWN_RESULT, 1021).
-
-
--define(BINARY_CHUNK_SIZE, 100000).
diff --git a/src/fabric/include/fabric2_REMOTE_15496.hrl 
b/src/fabric/include/fabric2_REMOTE_15496.hrl
deleted file mode 100644
index 453fc90..0000000
--- a/src/fabric/include/fabric2_REMOTE_15496.hrl
+++ /dev/null
@@ -1,63 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
-
--define(uint2bin(I), binary:encode_unsigned(I, little)).
--define(bin2uint(I), binary:decode_unsigned(I, little)).
--define(METADATA_VERSION_KEY, <<16#FF, "/metadataVersion">>).
-
-% Prefix Definitions
-
-% Layer Level: (LayerPrefix, X, ...)
-
--define(CLUSTER_CONFIG, 0).
--define(ALL_DBS, 1).
--define(DBS, 15).
--define(TX_IDS, 255).
-
-% Database Level: (LayerPrefix, ?DBS, DbPrefix, X, ...)
-
--define(DB_VERSION, 0).
--define(DB_CONFIG, 16).
--define(DB_STATS, 17).
--define(DB_ALL_DOCS, 18).
--define(DB_CHANGES, 19).
--define(DB_REVS, 20).
--define(DB_DOCS, 21).
--define(DB_LOCAL_DOCS, 22).
--define(DB_ATTS, 23).
--define(DB_VIEWS, 24).
--define(DB_LOCAL_DOC_BODIES, 25).
--define(DB_ATT_NAMES, 26).
--define(DB_MANGO, 27).
-
-
-% Versions
-
-% 0 - Initial implementation
-% 1 - Added attachment hash
-
--define(CURR_REV_FORMAT, 1).
-
-% Misc constants
-
--define(PDICT_DB_KEY, '$fabric_db_handle').
--define(PDICT_LAYER_CACHE, '$fabric_layer_id').
--define(PDICT_CHECKED_DB_IS_CURRENT, '$fabric_checked_db_is_current').
--define(PDICT_CHECKED_MD_IS_CURRENT, '$fabric_checked_md_is_current').
--define(PDICT_TX_ID_KEY, '$fabric_tx_id').
--define(PDICT_TX_RES_KEY, '$fabric_tx_result').
--define(PDICT_ON_COMMIT_FUN, '$fabric_on_commit_fun').
--define(COMMIT_UNKNOWN_RESULT, 1021).
-
-
--define(BINARY_CHUNK_SIZE, 100000).
diff --git a/src/fabric/src/fabric2_db.erl b/src/fabric/src/fabric2_db.erl
index ce3d248..eeaf3f1 100644
--- a/src/fabric/src/fabric2_db.erl
+++ b/src/fabric/src/fabric2_db.erl
@@ -811,16 +811,9 @@ fold_docs(Db, UserFun, UserAcc0, Options) ->
 
                 Row1 = case lists:keyfind(include_docs, 1, Options) of
                     {include_docs, true} ->
-                        DocMember = case fabric2_db:open_doc(Db, DocId, 
OpenOpts) of
-                            {not_found, missing} ->
-                                [];
-                            {ok, #doc{deleted = true}} ->
-                                [{doc, null}];
-                            {ok, #doc{} = Doc} ->
-                                [{doc, couch_doc:to_json_obj(Doc, DocOpts)}]
-                        end,
-                        Row0 ++ DocMember;
-                    _ -> Row0
+                        Row0 ++ open_json_doc(Db, DocId, OpenOpts, DocOpts);
+                    _ ->
+                        Row0
                 end,
 
                 maybe_stop(UserFun({row, Row1}, Acc))
@@ -1865,3 +1858,14 @@ stem_revisions(#{} = Db, #doc{} = Doc) ->
         true -> Doc#doc{revs = {RevPos, lists:sublist(Revs, RevsLimit)}};
         false -> Doc
     end.
+
+
+open_json_doc(Db, DocId, OpenOpts, DocOpts) ->
+    case fabric2_db:open_doc(Db, DocId, OpenOpts) of
+        {not_found, missing} ->
+            [];
+        {ok, #doc{deleted = true}} ->
+            [{doc, null}];
+        {ok, #doc{} = Doc} ->
+            [{doc, couch_doc:to_json_obj(Doc, DocOpts)}]
+    end.
diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl
index 4249701..f38894a 100644
--- a/src/fabric/src/fabric2_fdb.erl
+++ b/src/fabric/src/fabric2_fdb.erl
@@ -649,11 +649,12 @@ write_doc(#{} = Db0, Doc, NewWinner0, OldWinner, 
ToUpdate, ToRemove) ->
         atts = Atts
     } = Doc,
 
-    % Doc body
-    % Fetch the old doc body for the mango hooks later
-    PrevDoc = if OldWinner == not_found -> not_found; true ->
+    % Fetch the old doc body for the mango hooks
+    OldWinnerDoc = if OldWinner == not_found -> not_found; true ->
         get_doc_body(Db, DocId, OldWinner)
     end,
+
+    % Doc body
     ok = write_doc_body(Db, Doc),
 
     % Attachment bookkeeping
@@ -785,13 +786,14 @@ write_doc(#{} = Db0, Doc, NewWinner0, OldWinner, 
ToUpdate, ToRemove) ->
             end,
             incr_stat(Db, <<"doc_count">>, -1),
             incr_stat(Db, <<"doc_del_count">>, 1),
-            mango_indexer:delete_doc(Db, PrevDoc);
+            mango_indexer:delete_doc(Db, OldWinnerDoc);
         updated ->
+            % Get winning doc with conflicts field
             DocRev = extract_rev(Doc#doc.revs),
             {WinnerRevPos, _} = WinnerRevId = maps:get(rev_id, NewWinner),
             {WinnerDoc, OldWinnerDoc} = case WinnerRevId == DocRev of
-                true -> {Doc, PrevDoc};
-                false -> {PrevDoc, PrevDoc}
+                true -> {Doc, OldWinnerDoc};
+                false -> {OldWinnerDoc, OldWinnerDoc}
             end,
 
             RevConflicts = lists:foldl(fun (UpdateRev, Acc) ->
diff --git a/src/mango/src/mango_app.erl b/src/mango/src/mango_app.erl
index 221d57d..7a0c39d 100644
--- a/src/mango/src/mango_app.erl
+++ b/src/mango/src/mango_app.erl
@@ -15,7 +15,6 @@
 -export([start/2, stop/1]).
 
 start(_Type, StartArgs) ->
-    mango_jobs:set_timeout(),
     mango_sup:start_link(StartArgs).
 
 stop(_State) ->
diff --git a/src/mango/src/mango_crud.erl b/src/mango/src/mango_crud.erl
index 735531d..66cef65 100644
--- a/src/mango/src/mango_crud.erl
+++ b/src/mango/src/mango_crud.erl
@@ -33,11 +33,8 @@ insert(Db, #doc{}=Doc, Opts) ->
     insert(Db, [Doc], Opts);
 insert(Db, {_}=Doc, Opts) ->
     insert(Db, [Doc], Opts);
-insert(Db, Docs, Opts0) when is_list(Docs) ->
-    Opts1 = maybe_add_user_ctx(Db, Opts0),
-    % Todo: I dont think we need to support w = 3?
-    Opts2 = maybe_int_to_str(w, Opts1),
-    case fabric2_db:update_docs(Db, Docs, Opts2) of
+insert(Db, Docs, Opts) when is_list(Docs) ->
+    case fabric2_db:update_docs(Db, Docs, Opts) of
         {ok, Results0} ->
             {ok, lists:zipwith(fun result_to_json/2, Docs, Results0)};
         {accepted, Results0} ->
@@ -47,10 +44,8 @@ insert(Db, Docs, Opts0) when is_list(Docs) ->
     end.
 
 
-find(Db, Selector, Callback, UserAcc, Opts0) ->
-    Opts1 = maybe_add_user_ctx(Db, Opts0),
-    Opts2 = maybe_int_to_str(r, Opts1),
-    {ok, Cursor} = mango_cursor:create(Db, Selector, Opts2),
+find(Db, Selector, Callback, UserAcc, Opts) ->
+    {ok, Cursor} = mango_cursor:create(Db, Selector, Opts),
     mango_cursor:execute(Cursor, Callback, UserAcc).
 
 
@@ -100,31 +95,11 @@ delete(Db, Selector, Options) ->
     end.
 
 
-explain(Db, Selector, Opts0) ->
-    Opts1 = maybe_add_user_ctx(Db, Opts0),
-    Opts2 = maybe_int_to_str(r, Opts1),
-    {ok, Cursor} = mango_cursor:create(Db, Selector, Opts2),
+explain(Db, Selector, Opts) ->
+    {ok, Cursor} = mango_cursor:create(Db, Selector, Opts),
     mango_cursor:explain(Cursor).
 
 
-maybe_add_user_ctx(Db, Opts) ->
-    case lists:keyfind(user_ctx, 1, Opts) of
-        {user_ctx, _} ->
-            Opts;
-        false ->
-            UserCtx = maps:get(user_ctx, Db),
-            [{user_ctx, UserCtx} | Opts]
-    end.
-
-
-maybe_int_to_str(_Key, []) ->
-    [];
-maybe_int_to_str(Key, [{Key, Val} | Rest]) when is_integer(Val) ->
-    [{Key, integer_to_list(Val)} | maybe_int_to_str(Key, Rest)];
-maybe_int_to_str(Key, [KV | Rest]) ->
-    [KV | maybe_int_to_str(Key, Rest)].
-
-
 result_to_json(#doc{id=Id}, Result) ->
     result_to_json(Id, Result);
 result_to_json({Props}, Result) ->
diff --git a/src/mango/src/mango_cursor_view.erl 
b/src/mango/src/mango_cursor_view.erl
index 96d1fb5..5f91303 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -43,7 +43,6 @@ create(Db, Indexes, Selector, Opts) ->
     Skip = couch_util:get_value(skip, Opts, 0),
     Fields = couch_util:get_value(fields, Opts, all_fields),
     Bookmark = couch_util:get_value(bookmark, Opts),
-    io:format("Index selected ~p Range ~p ~n", [Index, IndexRanges]),
 
     {ok, #cursor{
         db = Db,
@@ -106,7 +105,6 @@ index_args(#cursor{} = Cursor) ->
         opts = Opts,
         bookmark = Bookmark
     } = Cursor,
-    io:format("SELE ~p ranges ~p ~n", [Cursor#cursor.selector, 
Cursor#cursor.ranges]),
 
     Args0 = #{
         start_key => mango_idx:start_key(Idx, Cursor#cursor.ranges),
@@ -235,75 +233,10 @@ choose_best_index(_DbName, IndexRanges) ->
     {SelectedIndex, SelectedIndexRanges}.
 
 
-%%view_cb({meta, Meta}, Acc) ->
-%%    % Map function starting
-%%    put(mango_docs_examined, 0),
-%%    set_mango_msg_timestamp(),
-%%    ok = rexi:stream2({meta, Meta}),
-%%    {ok, Acc};
-%%view_cb({row, Row}, #mrargs{extra = Options} = Acc) ->
-%%    ViewRow =  #view_row{
-%%        id = couch_util:get_value(id, Row),
-%%        key = couch_util:get_value(key, Row),
-%%        doc = couch_util:get_value(doc, Row)
-%%    },
-%%    case ViewRow#view_row.doc of
-%%        null ->
-%%            put(mango_docs_examined, get(mango_docs_examined) + 1),
-%%            maybe_send_mango_ping();
-%%        undefined ->
-%%            ViewRow2 = ViewRow#view_row{
-%%                value = couch_util:get_value(value, Row)
-%%            },
-%%            ok = rexi:stream2(ViewRow2),
-%%            put(mango_docs_examined, 0),
-%%            set_mango_msg_timestamp();
-%%        Doc ->
-%%            Selector = couch_util:get_value(selector, Options),
-%%            case mango_selector:match(Selector, Doc) of
-%%                true ->
-%%                    ViewRow2 = ViewRow#view_row{
-%%                        value = get(mango_docs_examined) + 1
-%%                    },
-%%                    ok = rexi:stream2(ViewRow2),
-%%                    put(mango_docs_examined, 0),
-%%                    set_mango_msg_timestamp();
-%%                false ->
-%%                    put(mango_docs_examined, get(mango_docs_examined) + 1),
-%%                    maybe_send_mango_ping()
-%%            end
-%%        end,
-%%    {ok, Acc};
-%%view_cb(complete, Acc) ->
-%%    % Finish view output
-%%    ok = rexi:stream_last(complete),
-%%    {ok, Acc};
-%%view_cb(ok, ddoc_updated) ->
-%%    rexi:reply({ok, ddoc_updated}).
-
-
-%%maybe_send_mango_ping() ->
-%%    Current = os:timestamp(),
-%%    LastPing = get(mango_last_msg_timestamp),
-%%    % Fabric will timeout if it has not heard a response from a worker node
-%%    % after 5 seconds. Send a ping every 4 seconds so the timeout doesn't 
happen.
-%%    case timer:now_diff(Current, LastPing) > ?HEARTBEAT_INTERVAL_IN_USEC of
-%%        false ->
-%%            ok;
-%%        true ->
-%%            rexi:ping(),
-%%            set_mango_msg_timestamp()
-%%    end.
-
-
-%%set_mango_msg_timestamp() ->
-%%    put(mango_last_msg_timestamp, os:timestamp()).
-
-
 handle_message({meta, _}, Cursor) ->
     {ok, Cursor};
 handle_message({doc, Key, Doc}, Cursor) ->
-    case doc_member(Cursor, Doc) of
+    case match_doc(Cursor, Doc) of
         {ok, Doc, {execution_stats, ExecutionStats1}} ->
             Cursor1 = Cursor#cursor {
                 execution_stats = ExecutionStats1
@@ -341,124 +274,23 @@ handle_doc(#cursor{limit = L, execution_stats = Stats} = 
C, Doc) when L > 0 ->
 handle_doc(C, _Doc) ->
     {stop, C}.
 
-%%apply_opts([], Args) ->
-%%    Args;
-%%apply_opts([{r, RStr} | Rest], Args) ->
-%%    IncludeDocs = case list_to_integer(RStr) of
-%%        1 ->
-%%            true;
-%%        R when R > 1 ->
-%%            % We don't load the doc in the view query because
-%%            % we have to do a quorum read in the coordinator
-%%            % so there's no point.
-%%            false
-%%    end,
-%%    NewArgs = Args#mrargs{include_docs = IncludeDocs},
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{conflicts, true} | Rest], Args) ->
-%%    NewArgs = Args#mrargs{conflicts = true},
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{conflicts, false} | Rest], Args) ->
-%%    % Ignored cause default
-%%    apply_opts(Rest, Args);
-%%apply_opts([{sort, Sort} | Rest], Args) ->
-%%    % We only support single direction sorts
-%%    % so nothing fancy here.
-%%    case mango_sort:directions(Sort) of
-%%        [] ->
-%%            apply_opts(Rest, Args);
-%%        [<<"asc">> | _] ->
-%%            apply_opts(Rest, Args);
-%%        [<<"desc">> | _] ->
-%%            SK = Args#mrargs.start_key,
-%%            SKDI = Args#mrargs.start_key_docid,
-%%            EK = Args#mrargs.end_key,
-%%            EKDI = Args#mrargs.end_key_docid,
-%%            NewArgs = Args#mrargs{
-%%                direction = rev,
-%%                start_key = EK,
-%%                start_key_docid = EKDI,
-%%                end_key = SK,
-%%                end_key_docid = SKDI
-%%            },
-%%            apply_opts(Rest, NewArgs)
-%%    end;
-%%apply_opts([{stale, ok} | Rest], Args) ->
-%%    NewArgs = Args#mrargs{
-%%        stable = true,
-%%        update = false
-%%    },
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{stable, true} | Rest], Args) ->
-%%    NewArgs = Args#mrargs{
-%%        stable = true
-%%    },
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{update, false} | Rest], Args) ->
-%%    NewArgs = Args#mrargs{
-%%        update = false
-%%    },
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{partition, <<>>} | Rest], Args) ->
-%%    apply_opts(Rest, Args);
-%%apply_opts([{partition, Partition} | Rest], Args) when is_binary(Partition) 
->
-%%    NewArgs = couch_mrview_util:set_extra(Args, partition, Partition),
-%%    apply_opts(Rest, NewArgs);
-%%apply_opts([{_, _} | Rest], Args) ->
-%%    % Ignore unknown options
-%%    apply_opts(Rest, Args).
-
-
-doc_member(Cursor, DocProps) ->
-%%    Db = Cursor#cursor.db,
-%%    Opts = Cursor#cursor.opts,
-    ExecutionStats = Cursor#cursor.execution_stats,
+
+match_doc(Cursor, Doc) ->
+    ExecStats = Cursor#cursor.execution_stats,
     Selector = Cursor#cursor.selector,
-    ExecutionStats1 = mango_execution_stats:incr_docs_examined(ExecutionStats, 
1),
-    match_doc(Selector, DocProps, ExecutionStats1).
-    %%    {Matched, Incr} = case couch_util:get_value(value, RowProps) of
-%%        N when is_integer(N) -> {true, N};
-%%        _ -> {false, 1}
-%%    end,
-%%    case couch_util:get_value(doc, RowProps) of
-%%        {DocProps} ->
-%%            ExecutionStats1 = 
mango_execution_stats:incr_docs_examined(ExecutionStats, Incr),
-%%            case Matched of
-%%                true ->
-%%                    {ok, {DocProps}, {execution_stats, ExecutionStats1}};
-%%                false ->
-%%                    match_doc(Selector, {DocProps}, ExecutionStats1)
-%%                end
-%%        undefined ->
-%%            ExecutionStats1 = 
mango_execution_stats:incr_quorum_docs_examined(ExecutionStats),
-%%            Id = couch_util:get_value(id, RowProps),
-%%            case mango_util:defer(fabric, open_doc, [Db, Id, Opts]) of
-%%                {ok, #doc{}=DocProps} ->
-%%                    Doc = couch_doc:to_json_obj(DocProps, []),
-%%                    match_doc(Selector, Doc, ExecutionStats1);
-%%                Else ->
-%%                    Else
-%%            end;
-%%        null ->
-%%            ExecutionStats1 = 
mango_execution_stats:incr_docs_examined(ExecutionStats),
-%%            {no_match, null, {execution_stats, ExecutionStats1}}
-%%    end.
-
-
-match_doc(Selector, Doc, ExecutionStats) ->
+    ExecStats1 = mango_execution_stats:incr_docs_examined(ExecStats, 1),
+
     case mango_selector:match(Selector, Doc) of
         true ->
-            {ok, Doc, {execution_stats, ExecutionStats}};
+            {ok, Doc, {execution_stats, ExecStats1}};
         false ->
-            {no_match, Doc, {execution_stats, ExecutionStats}}
+            {no_match, Doc, {execution_stats, ExecStats1}}
     end.
 
 
-
-
-update_bookmark_keys(#cursor{limit = Limit} = Cursor, {Key, Props}) when Limit 
> 0 ->
+update_bookmark_keys(#cursor{limit = Limit} = Cursor, {Key, Props})
+        when Limit > 0 ->
     Id = couch_util:get_value(<<"_id">>, Props),
-%%    Key = couch_util:get_value(<<"key">>, Props),
    Cursor#cursor {
         bookmark_docid = Id,
         bookmark_key = Key
@@ -490,7 +322,7 @@ runs_match_on_doc_with_no_value_test() ->
             ]
         }}
     ],
-    {Match, _, _} = doc_member(Cursor, {RowProps}),
+    {Match, _, _} = match_doc(Cursor, {RowProps}),
     ?assertEqual(no_match, Match).
 
 does_not_run_match_on_doc_with_value_test() ->
@@ -512,7 +344,7 @@ does_not_run_match_on_doc_with_value_test() ->
             ]
         }}
     ],
-    {Match, _, _} = doc_member(Cursor, {RowProps}),
+    {Match, _, _} = match_doc(Cursor, {RowProps}),
     ?assertEqual(ok, Match).
 
 
diff --git a/src/mango/src/mango_fdb.erl b/src/mango/src/mango_fdb.erl
index 9b5206e..7c2810f 100644
--- a/src/mango/src/mango_fdb.erl
+++ b/src/mango/src/mango_fdb.erl
@@ -24,7 +24,7 @@
     create_build_vs/2,
     set_build_vs/4,
     get_build_vs/2,
-    get_build_status/2,
+    get_build_state/2,
     get_update_seq/2,
     set_update_seq/3,
     remove_doc/3,
@@ -70,7 +70,7 @@ get_build_vs(TxDb, DDoc) ->
     end.
 
 
-get_build_status(TxDb, DDoc) ->
+get_build_state(TxDb, DDoc) ->
     case get_build_vs(TxDb, DDoc) of
         not_found -> ?MANGO_INDEX_BUILDING;
         {_, BuildState} -> BuildState
@@ -118,6 +118,7 @@ write_doc(TxDb, DocId, IdxResults) ->
         add_key(TxDb, MangoIdxPrefix, Results, DocId)
     end, IdxResults).
 
+
 query(Db, CallBack, Cursor, Args) ->
     #cursor{
         index = Idx
diff --git a/src/mango/src/mango_httpd.erl b/src/mango/src/mango_httpd.erl
index b8525dc..d5e9cfa 100644
--- a/src/mango/src/mango_httpd.erl
+++ b/src/mango/src/mango_httpd.erl
@@ -62,8 +62,7 @@ handle_req_int(_, _) ->
 handle_index_req(#httpd{method='GET', path_parts=[_, _]}=Req, Db) ->
     Params = lists:flatmap(fun({K, V}) -> parse_index_param(K, V) end,
         chttpd:qs(Req)),
-    Idxs0 = mango_idx:add_build_status(Db, mango_idx:list(Db)),
-    Idxs = lists:sort(Idxs0),
+    Idxs = lists:sort(mango_idx:list(Db)),
     JsonIdxs0 = lists:map(fun mango_idx:to_json/1, Idxs),
     TotalRows = length(JsonIdxs0),
     Limit = case couch_util:get_value(limit, Params, TotalRows) of
diff --git a/src/mango/src/mango_idx.erl b/src/mango/src/mango_idx.erl
index b861d52..401707b 100644
--- a/src/mango/src/mango_idx.erl
+++ b/src/mango/src/mango_idx.erl
@@ -26,7 +26,7 @@
     add/2,
     remove/2,
     from_ddoc/2,
-    add_build_status/2,
+%%    add_build_status/2,
     special/1,
 
     dbname/1,
@@ -81,7 +81,8 @@ ddoc_fold_cb({row, Row}, Acc) ->
     case proplists:get_value(<<"language">>, Props) of
         <<"query">> ->
             Idx = from_ddoc(Db, JSONDoc),
-            {ok, Acc#{rows:= Rows ++ Idx}};
+            Idx1 = add_build_status(Db, Idx),
+            {ok, Acc#{rows:= Rows ++ Idx1}};
         _ ->
             {ok, Acc}
     end.
@@ -104,7 +105,7 @@ get_rev_info(Row) ->
 
 
 get_usable_indexes(Db, Selector, Opts) ->
-    ExistingIndexes = mango_idx:add_build_status(Db, mango_idx:list(Db)),
+    ExistingIndexes = mango_idx:list(Db),
     GlobalIndexes = mango_cursor:remove_indexes_with_partial_filter_selector(
             ExistingIndexes
         ),
@@ -230,13 +231,12 @@ from_ddoc(Db, {Props}) ->
         _ ->
             ?MANGO_ERROR(invalid_query_ddoc_language)
     end,
-    IdxMods = [mango_idx_view],
-%%    IdxMods = case clouseau_rpc:connected() of
-%%        true ->
-%%            [mango_idx_view, mango_idx_text];
-%%        false ->
-%%            [mango_idx_view]
-%%    end,
+    IdxMods = case is_text_service_available() of
+        true ->
+            [mango_idx_view, mango_idx_text];
+        false ->
+            [mango_idx_view]
+    end,
     Idxs = lists:flatmap(fun(Mod) -> Mod:from_ddoc({Props}) end, IdxMods),
     lists:map(fun(Idx) ->
         Idx#idx{
@@ -247,18 +247,16 @@ from_ddoc(Db, {Props}) ->
     end, Idxs).
 
 
-add_build_status(Db, Idxs) ->
-    fabric2_fdb:transactional(Db, fun(TxDb) ->
-        lists:map(fun
-            (#idx{type = <<"special">>} = Idx) ->
-                Idx;
-            (Idx) ->
-                DDoc = mango_idx:ddoc(Idx),
-                Idx#idx{
-                    build_status = mango_fdb:get_build_status(TxDb, DDoc)
-                }
-        end, Idxs)
-    end).
+add_build_status(TxDb, Idxs) ->
+    lists:map(fun
+        (#idx{type = <<"special">>} = Idx) ->
+            Idx;
+        (Idx) ->
+            DDoc = mango_idx:ddoc(Idx),
+            Idx#idx{
+                build_status = mango_fdb:get_build_state(TxDb, DDoc)
+            }
+    end, Idxs).
 
 
 special(Db) ->
diff --git a/src/mango/src/mango_idx_view.hrl b/src/mango/src/mango_idx_view.hrl
index 14ce87c..2dc3c01 100644
--- a/src/mango/src/mango_idx_view.hrl
+++ b/src/mango/src/mango_idx_view.hrl
@@ -10,5 +10,4 @@
 % License for the specific language governing permissions and limitations under
 % the License.
 
-%%-define(MAX_JSON_OBJ, {<<255, 255, 255, 255>>}).
 -define(MAX_JSON_OBJ, {[{<<"\ufff0">>, <<"\ufff0">>}]}).
diff --git a/src/mango/src/mango_jobs_indexer.erl 
b/src/mango/src/mango_jobs_indexer.erl
index c22b62f..e1f6b56 100644
--- a/src/mango/src/mango_jobs_indexer.erl
+++ b/src/mango/src/mango_jobs_indexer.erl
@@ -21,9 +21,11 @@
 
 
 -export([
+    set_timeout/0,
     init/0
 ]).
 
+
 -include("mango.hrl").
 -include("mango_idx.hrl").
 -include_lib("couch/include/couch_db.hrl").
@@ -34,6 +36,10 @@ spawn_link() ->
     proc_lib:spawn_link(?MODULE, init, []).
 
 
+set_timeout() ->
+    mango_jobs:set_timeout().
+
+
 init() ->
     {ok, Job, Data} = couch_jobs:accept(?MANGO_INDEX_JOB_TYPE, #{}),
     #{
@@ -266,47 +272,6 @@ index_doc(Db, Idx, #{doc := Doc}) ->
     mango_indexer:write_doc(Db, Doc, [Idx]).
 
 
-%%fetch_docs(Db, Changes) ->
-%%    {Deleted, NotDeleted} = lists:partition(fun(Doc) ->
-%%        #{deleted := Deleted} = Doc,
-%%        Deleted
-%%    end, Changes),
-%%
-%%    RevState = lists:foldl(fun(Change, Acc) ->
-%%        #{id := Id} = Change,
-%%        RevFuture = fabric2_fdb:get_winning_revs_future(Db, Id, 1),
-%%        Acc#{
-%%            RevFuture => {Id, Change}
-%%        }
-%%    end, #{}, NotDeleted),
-%%
-%%    RevFutures = maps:keys(RevState),
-%%    BodyState = lists:foldl(fun(RevFuture, Acc) ->
-%%        {Id, Change} = maps:get(RevFuture, RevState),
-%%        Revs = fabric2_fdb:get_winning_revs_wait(Db, RevFuture),
-%%
-%%        % I'm assuming that in this changes transaction that the winning
-%%        % doc body exists since it is listed in the changes feed as not 
deleted
-%%        #{winner := true} = RevInfo = lists:last(Revs),
-%%        BodyFuture = fabric2_fdb:get_doc_body_future(Db, Id, RevInfo),
-%%        Acc#{
-%%            BodyFuture => {Id, RevInfo, Change}
-%%        }
-%%    end, #{}, erlfdb:wait_for_all(RevFutures)),
-%%
-%%    BodyFutures = maps:keys(BodyState),
-%%    ChangesWithDocs = lists:map(fun (BodyFuture) ->
-%%        {Id, RevInfo, Change} = maps:get(BodyFuture, BodyState),
-%%        Doc = fabric2_fdb:get_doc_body_wait(Db, Id, RevInfo, BodyFuture),
-%%        Change#{doc => Doc}
-%%    end, erlfdb:wait_for_all(BodyFutures)),
-%%
-%%    % This combines the deleted changes with the changes that contain docs
-%%    % Important to note that this is now unsorted. Which is fine for now
-%%    % But later could be an issue if we split this across transactions
-%%    Deleted ++ ChangesWithDocs.
-
-
 report_progress(State, UpdateType) ->
     #{
         tx_db := TxDb,
diff --git a/src/mango/src/mango_util.erl b/src/mango/src/mango_util.erl
index 50fa79a..faad55c 100644
--- a/src/mango/src/mango_util.erl
+++ b/src/mango/src/mango_util.erl
@@ -86,15 +86,6 @@ open_doc(Db, DocId) ->
 
 open_doc(Db, DocId, Options) ->
     fabric2_db:open_doc(Db, DocId, Options).
-    % TODO: is this defer still required?
-%%    case mango_util:defer(fabric, open_doc, [Db, DocId, Options]) of
-%%        {ok, Doc} ->
-%%            {ok, Doc};
-%%        {not_found, _} ->
-%%            not_found;
-%%        _ ->
-%%            ?MANGO_ERROR({error_loading_doc, DocId})
-%%    end.
 
 
 open_ddocs(Db) ->
diff --git a/src/mango/test/02-basic-find-test.py 
b/src/mango/test/02-basic-find-test.py
index fd66e30..00d1d84 100644
--- a/src/mango/test/02-basic-find-test.py
+++ b/src/mango/test/02-basic-find-test.py
@@ -205,7 +205,7 @@ class BasicFindTests(mango.UserDocsTests):
         docs1 = self.db.find({"age": {"$gt": 0}}, sort=[{"age": "desc"}])
         docs2 = list(reversed(sorted(docs1, key=lambda d: d["age"])))
         assert docs1 is not docs2 and docs1 == docs2
-    #
+
     def test_sort_desc_complex(self):
         docs = self.db.find(
             {

Reply via email to