summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Kocoloski <kocolosk@apache.org>2019-06-18 23:14:57 -0400
committerAdam Kocoloski <kocolosk@apache.org>2019-06-20 15:32:31 -0400
commit7dbd4d5a0cd67927e8ae030ec027db8699c5e1b5 (patch)
treed92658b9ae945bb3de8c8ec368e68ee6dadcdbd2
parent6f95fb3c0a35059c1a2ae4970605d1034cf799d8 (diff)
downloadcouchdb-7dbd4d5a0cd67927e8ae030ec027db8699c5e1b5.tar.gz
Further improve detection of Search system
The clouseau_rpc:version() call actually takes a few milliseconds to complete, so instead we first check for a hidden clouseau node already connected to our node. If we don't find it, we do the version() RPC.
-rw-r--r--src/dreyfus/src/clouseau_rpc.erl17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/dreyfus/src/clouseau_rpc.erl b/src/dreyfus/src/clouseau_rpc.erl
index 38d6142d6..38247ff81 100644
--- a/src/dreyfus/src/clouseau_rpc.erl
+++ b/src/dreyfus/src/clouseau_rpc.erl
@@ -93,11 +93,18 @@ version() ->
rpc({main, clouseau()}, version).
connected() ->
- case version() of
- {'EXIT', noconnection} ->
- false;
- _ ->
- true
+ HiddenNodes = erlang:nodes(hidden),
+ case lists:member(clouseau(), HiddenNodes) of
+ true ->
+ true;
+ false ->
+ % We might have just booted up, so let's send a test RPC
+ case (catch version()) of
+ {ok, _} ->
+ true;
+ _Err ->
+ false
+ end
end.
rpc(Ref, Msg) ->