7
7
8
8
all () ->
9
9
[
10
- all_replica_states_includes_nonvoters ,
10
+ all_replica_states_includes_alive_nonvoters ,
11
11
filter_nonvoters ,
12
12
filter_quorum_critical_accounts_nonvoters ,
13
13
ra_machine_conf_delivery_limit
@@ -97,27 +97,29 @@ filter_nonvoters(_Config) ->
97
97
[Q4 ] = rabbit_quorum_queue :filter_promotable (Qs , Ss ),
98
98
ok .
99
99
100
- all_replica_states_includes_nonvoters (_Config ) ->
100
+ all_replica_states_includes_alive_nonvoters (_Config ) ->
101
101
ets :new (ra_state , [named_table , public , {write_concurrency , true }]),
102
+ QPids = start_qprocs (_AliveQs = [q1 , q2 , q3 , q4 ]),
102
103
ets :insert (ra_state , [
103
104
{q1 , leader , voter },
104
105
{q2 , follower , voter },
105
106
{q3 , follower , promotable },
106
107
{q4 , init , unknown },
107
- % % pre ra-2.7.0
108
- {q5 , leader },
109
- {q6 , follower }
108
+ % % queues in ra_state but not alive
109
+ {q5 , leader , voter },
110
+ {q6 , follower , noproc }
110
111
]),
111
112
{_ , #{
112
113
q1 := leader ,
113
114
q2 := follower ,
114
115
q3 := promotable ,
115
- q4 := init ,
116
- q5 : = leader ,
117
- q6 : = follower
118
- }} = rabbit_quorum_queue : all_replica_states ( ),
116
+ q4 := init
117
+ } = ReplicaStates } = rabbit_quorum_queue : all_replica_states () ,
118
+ ? assertNot ( maps : is_key ( q5 , ReplicaStates )),
119
+ ? assertNot ( maps : is_key ( q6 , ReplicaStates ) ),
119
120
120
121
true = ets :delete (ra_state ),
122
+ _ = stop_qprocs (QPids ),
121
123
ok .
122
124
123
125
make_ra_machine_conf (Q0 , Arg , Pol , OpPol ) ->
@@ -128,3 +130,13 @@ make_ra_machine_conf(Q0, Arg, Pol, OpPol) ->
128
130
{definition , [{<<" delivery-limit" >>,OpPol }]}]),
129
131
rabbit_quorum_queue :ra_machine_config (Q ).
130
132
133
+ start_qprocs (Qs ) ->
134
+ [begin
135
+ QPid = spawn (fun () -> receive done -> ok end end ),
136
+ erlang :register (Q , QPid ),
137
+ QPid
138
+ end || Q <- Qs ].
139
+
140
+ stop_qprocs (Pids ) ->
141
+ [erlang :send (P , done )|| P <- Pids ].
142
+
0 commit comments