14
14
await_running_count /2 , is_single_node_cluster /0 ,
15
15
boot /0 ]).
16
16
-export ([persistent_cluster_id /0 , seed_internal_cluster_id /0 , seed_user_provided_cluster_name /0 ]).
17
- -export ([all_running_with_hashes /0 ]).
17
+ -export ([all / 0 , all_running_with_hashes / 0 , target_cluster_size_hint / 0 , reached_target_cluster_size /0 ]).
18
18
-export ([lock_id /1 , lock_retries /0 ]).
19
19
20
20
-include_lib (" kernel/include/inet.hrl" ).
30
30
% 80 corresponds to a timeout of ca 300 seconds.
31
31
-define (DEFAULT_LOCK_RETRIES , 80 ).
32
32
33
+ -define (DEFAULT_TARGET_CLUSTER_SIZE , 1 ).
34
+
33
35
% %----------------------------------------------------------------------------
34
36
% % API
35
37
% %----------------------------------------------------------------------------
@@ -137,6 +139,9 @@ set_cluster_name(Name, Username) ->
137
139
ensure_epmd () ->
138
140
rabbit_nodes_common :ensure_epmd ().
139
141
142
+ -spec all () -> [node ()].
143
+ all () -> rabbit_mnesia :cluster_nodes (all ).
144
+
140
145
-spec all_running () -> [node ()].
141
146
all_running () -> rabbit_mnesia :cluster_nodes (running ).
142
147
@@ -170,15 +175,32 @@ await_running_count_with_retries(TargetCount, Retries) ->
170
175
all_running_with_hashes () ->
171
176
maps :from_list ([{erlang :phash2 (Node ), Node } || Node <- all_running ()]).
172
177
178
+ -spec target_cluster_size_hint () -> non_neg_integer ().
179
+ target_cluster_size_hint () ->
180
+ cluster_formation_key_or_default (target_cluster_size_hint , ? DEFAULT_TARGET_CLUSTER_SIZE ).
181
+
182
+ -spec reached_target_cluster_size () -> boolean ().
183
+ reached_target_cluster_size () ->
184
+ running_count () >= target_cluster_size_hint ().
185
+
186
+
173
187
-spec lock_id (Node :: node ()) -> {ResourceId :: string (), LockRequesterId :: node ()}.
174
188
lock_id (Node ) ->
175
189
{cookie_hash (), Node }.
176
190
177
191
-spec lock_retries () -> integer ().
178
192
lock_retries () ->
179
- case application :get_env (rabbit , cluster_formation ) of
180
- {ok , PropList } ->
181
- proplists :get_value (internal_lock_retries , PropList , ? DEFAULT_LOCK_RETRIES );
182
- undefined ->
183
- ? DEFAULT_LOCK_RETRIES
184
- end .
193
+ cluster_formation_key_or_default (internal_lock_retries , ? DEFAULT_LOCK_RETRIES ).
194
+
195
+
196
+ % %
197
+ % % Implementation
198
+ % %
199
+
200
+ cluster_formation_key_or_default (Key , Default ) ->
201
+ case application :get_env (rabbit , cluster_formation ) of
202
+ {ok , PropList } ->
203
+ proplists :get_value (Key , PropList , Default );
204
+ undefined ->
205
+ Default
206
+ end .
0 commit comments