@@ -34,6 +34,7 @@ all() ->
34
34
{group , cluster_size_3 },
35
35
{group , cluster_size_3_1 },
36
36
{group , cluster_size_3_2 },
37
+ {group , cluster_size_3_3 },
37
38
{group , cluster_size_3_parallel_1 },
38
39
{group , cluster_size_3_parallel_2 },
39
40
{group , cluster_size_3_parallel_3 },
@@ -79,6 +80,7 @@ groups() ->
79
80
{cluster_size_3_2 , [], [recover ,
80
81
declare_with_node_down_1 ,
81
82
declare_with_node_down_2 ]},
83
+ {cluster_size_3_3 , [], [consume_while_deleting_replica ]},
82
84
{cluster_size_3_parallel_1 , [parallel ], [
83
85
delete_replica ,
84
86
delete_last_replica ,
@@ -207,6 +209,7 @@ init_per_group1(Group, Config) ->
207
209
cluster_size_3_parallel_5 -> 3 ;
208
210
cluster_size_3_1 -> 3 ;
209
211
cluster_size_3_2 -> 3 ;
212
+ cluster_size_3_3 -> 3 ;
210
213
unclustered_size_3_1 -> 3 ;
211
214
unclustered_size_3_2 -> 3 ;
212
215
unclustered_size_3_3 -> 3 ;
@@ -1648,6 +1651,45 @@ consume_from_replica(Config) ->
1648
1651
receive_batch (Ch2 , 0 , 99 ),
1649
1652
rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete_testcase_queue , [Q ]).
1650
1653
1654
+ consume_while_deleting_replica (Config ) ->
1655
+ [Server1 , _ , Server3 ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
1656
+
1657
+ Ch1 = rabbit_ct_client_helpers :open_channel (Config , Server1 ),
1658
+ Q = ? config (queue_name , Config ),
1659
+
1660
+ ? assertEqual ({'queue.declare_ok' , Q , 0 , 0 },
1661
+ declare (Config , Server1 , Q , [{<<" x-queue-type" >>, longstr , <<" stream" >>}])),
1662
+
1663
+ rabbit_ct_helpers :await_condition (
1664
+ fun () ->
1665
+ Info = find_queue_info (Config , 1 , [online ]),
1666
+ length (proplists :get_value (online , Info )) == 3
1667
+ end ),
1668
+
1669
+ Ch2 = rabbit_ct_client_helpers :open_channel (Config , Server3 ),
1670
+ qos (Ch2 , 10 , false ),
1671
+
1672
+ CTag = atom_to_binary (? FUNCTION_NAME ),
1673
+ subscribe (Ch2 , Q , false , 0 , CTag ),
1674
+
1675
+ % % Delete replica in node 3
1676
+ rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_stream_queue ,
1677
+ delete_replica , [<<" /" >>, Q , Server3 ]),
1678
+
1679
+ publish_confirm (Ch1 , Q , [<<" msg1" >> || _ <- lists :seq (1 , 100 )]),
1680
+
1681
+ % % no messages should be received
1682
+ receive
1683
+ # 'basic.cancel' {consumer_tag = CTag } ->
1684
+ ok ;
1685
+ {_ , # amqp_msg {}} ->
1686
+ exit (unexpected_message )
1687
+ after 30000 ->
1688
+ exit (missing_consumer_cancel )
1689
+ end ,
1690
+
1691
+ rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete_testcase_queue , [Q ]).
1692
+
1651
1693
consume_credit (Config ) ->
1652
1694
[Server | _ ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
1653
1695
0 commit comments