Browse Source

get_subcluster_nodes raises error for invalid scopes.

Roberto Ostinelli 3 years ago
parent
commit
a1a3cffea7
2 changed files with 8 additions and 3 deletions
  1. 5 3
      src/syn_gen_scope.erl
  2. 3 0
      test/syn_registry_SUITE.erl

+ 5 - 3
src/syn_gen_scope.erl

@@ -91,8 +91,10 @@ start_link(Handler, Scope, Args) when is_atom(Scope) ->
 
 -spec get_subcluster_nodes(Handler :: module(), Scope :: atom()) -> [node()].
 get_subcluster_nodes(Handler, Scope) ->
-    ProcessName = get_process_name_for_scope(Handler, Scope),
-    gen_server:call(ProcessName, get_subcluster_nodes).
+    case get_process_name_for_scope(Handler, Scope) of
+        undefined -> error({invalid_scope, Scope});
+        ProcessName -> gen_server:call(ProcessName, get_subcluster_nodes)
+    end.
 
 -spec call(Handler :: module(), Scope :: atom(), Message :: any()) -> Response :: any().
 call(Handler, Scope, Message) ->
@@ -102,7 +104,7 @@ call(Handler, Scope, Message) ->
 call(Handler, Node, Scope, Message) ->
     case get_process_name_for_scope(Handler, Scope) of
         undefined -> error({invalid_scope, Scope});
-        ProcessName ->  gen_server:call({ProcessName, Node}, Message)
+        ProcessName -> gen_server:call({ProcessName, Node}, Message)
     end.
 
 %% ===================================================================

+ 3 - 0
test/syn_registry_SUITE.erl

@@ -305,6 +305,9 @@ three_nodes_discover_custom_scope(Config) ->
     ok = rpc:call(SlaveNode1, syn, add_node_to_scopes, [[custom_scope_ab, custom_scope_bc, custom_scope_all]]),
     ok = rpc:call(SlaveNode2, syn, add_node_to_scopes, [[custom_scope_bc, custom_scope_c, custom_scope_all]]),
 
+    %% get_subcluster_nodes should return invalid errors
+    {'EXIT', {{invalid_scope, custom_abcdef}, _}} = catch syn_registry:get_subcluster_nodes(custom_abcdef),
+
     %% check
     syn_test_suite_helper:assert_scope_subcluster(node(), custom_scope_ab, [SlaveNode1]),
     syn_test_suite_helper:assert_scope_subcluster(node(), custom_scope_all, [SlaveNode1, SlaveNode2]),