@@ -36,7 +36,7 @@ handle_info(start_gc, State) ->
36
36
gc_queues (),
37
37
gc_exchanges (),
38
38
gc_nodes (),
39
- {noreply , start_timer (State )}.
39
+ {noreply , start_timer (State ), hibernate }.
40
40
41
41
terminate (_Reason , # state {timer = TRef }) ->
42
42
_ = erlang :cancel_timer (TRef ),
@@ -56,12 +56,12 @@ gc_connections() ->
56
56
57
57
gc_vhosts () ->
58
58
VHosts = rabbit_vhost :list (),
59
- GbSet = gb_sets :from_list (VHosts ),
60
- gc_entity (vhost_stats_coarse_conn_stats , GbSet ),
61
- gc_entity (vhost_stats_fine_stats , GbSet ),
62
- gc_entity (vhost_msg_stats , GbSet ),
63
- gc_entity (vhost_msg_rates , GbSet ),
64
- gc_entity (vhost_stats_deliver_stats , GbSet ).
59
+ Set = sets :from_list (VHosts , [{ version , 2 }] ),
60
+ gc_entity (vhost_stats_coarse_conn_stats , Set ),
61
+ gc_entity (vhost_stats_fine_stats , Set ),
62
+ gc_entity (vhost_msg_stats , Set ),
63
+ gc_entity (vhost_msg_rates , Set ),
64
+ gc_entity (vhost_stats_deliver_stats , Set ).
65
65
66
66
gc_channels () ->
67
67
gc_process (channel_created_stats ),
@@ -73,45 +73,45 @@ gc_channels() ->
73
73
74
74
gc_queues () ->
75
75
Queues = rabbit_amqqueue :list_names (),
76
- GbSet = gb_sets :from_list (Queues ),
76
+ Set = sets :from_list (Queues , [{ version , 2 }] ),
77
77
LocalQueues = rabbit_amqqueue :list_local_names (),
78
- LocalGbSet = gb_sets :from_list (LocalQueues ),
79
- gc_entity (queue_stats_publish , GbSet ),
80
- gc_entity (queue_stats , LocalGbSet ),
81
- gc_entity (queue_basic_stats , LocalGbSet ),
82
- gc_entity (queue_msg_stats , LocalGbSet ),
83
- gc_entity (queue_process_stats , LocalGbSet ),
84
- gc_entity (queue_msg_rates , LocalGbSet ),
85
- gc_entity (queue_stats_deliver_stats , GbSet ),
86
- gc_process_and_entity (channel_queue_stats_deliver_stats_queue_index , GbSet ),
87
- gc_process_and_entity (consumer_stats_queue_index , GbSet ),
88
- gc_process_and_entity (consumer_stats_channel_index , GbSet ),
89
- gc_process_and_entity (consumer_stats , GbSet ),
90
- gc_process_and_entity (channel_exchange_stats_fine_stats_channel_index , GbSet ),
91
- gc_process_and_entity (channel_queue_stats_deliver_stats , GbSet ),
92
- gc_process_and_entity (channel_queue_stats_deliver_stats_channel_index , GbSet ),
93
- ExchangeGbSet = gb_sets :from_list (rabbit_exchange :list_names ()),
94
- gc_entities (queue_exchange_stats_publish , GbSet , ExchangeGbSet ),
95
- gc_entities (queue_exchange_stats_publish_queue_index , GbSet , ExchangeGbSet ),
96
- gc_entities (queue_exchange_stats_publish_exchange_index , GbSet , ExchangeGbSet ).
78
+ LocalSet = sets :from_list (LocalQueues , [{ version , 2 }] ),
79
+ gc_entity (queue_stats_publish , Set ),
80
+ gc_entity (queue_stats , LocalSet ),
81
+ gc_entity (queue_basic_stats , LocalSet ),
82
+ gc_entity (queue_msg_stats , LocalSet ),
83
+ gc_entity (queue_process_stats , LocalSet ),
84
+ gc_entity (queue_msg_rates , LocalSet ),
85
+ gc_entity (queue_stats_deliver_stats , Set ),
86
+ gc_process_and_entity (channel_queue_stats_deliver_stats_queue_index , Set ),
87
+ gc_process_and_entity (consumer_stats_queue_index , Set ),
88
+ gc_process_and_entity (consumer_stats_channel_index , Set ),
89
+ gc_process_and_entity (consumer_stats , Set ),
90
+ gc_process_and_entity (channel_exchange_stats_fine_stats_channel_index , Set ),
91
+ gc_process_and_entity (channel_queue_stats_deliver_stats , Set ),
92
+ gc_process_and_entity (channel_queue_stats_deliver_stats_channel_index , Set ),
93
+ ExchangeSet = sets :from_list (rabbit_exchange :list_names (), [{ version , 2 }] ),
94
+ gc_entities (queue_exchange_stats_publish , Set , ExchangeSet ),
95
+ gc_entities (queue_exchange_stats_publish_queue_index , Set , ExchangeSet ),
96
+ gc_entities (queue_exchange_stats_publish_exchange_index , Set , ExchangeSet ).
97
97
98
98
gc_exchanges () ->
99
99
Exchanges = rabbit_exchange :list_names (),
100
- GbSet = gb_sets :from_list (Exchanges ),
101
- gc_entity (exchange_stats_publish_in , GbSet ),
102
- gc_entity (exchange_stats_publish_out , GbSet ),
103
- gc_entity (channel_exchange_stats_fine_stats_exchange_index , GbSet ),
104
- gc_process_and_entity (channel_exchange_stats_fine_stats , GbSet ).
100
+ Set = sets :from_list (Exchanges , [{ version , 2 }] ),
101
+ gc_entity (exchange_stats_publish_in , Set ),
102
+ gc_entity (exchange_stats_publish_out , Set ),
103
+ gc_entity (channel_exchange_stats_fine_stats_exchange_index , Set ),
104
+ gc_process_and_entity (channel_exchange_stats_fine_stats , Set ).
105
105
106
106
gc_nodes () ->
107
107
Nodes = rabbit_nodes :list_members (),
108
- GbSet = gb_sets :from_list (Nodes ),
109
- gc_entity (node_stats , GbSet ),
110
- gc_entity (node_coarse_stats , GbSet ),
111
- gc_entity (node_persister_stats , GbSet ),
112
- gc_entity (node_node_coarse_stats_node_index , GbSet ),
113
- gc_entity (node_node_stats , GbSet ),
114
- gc_entity (node_node_coarse_stats , GbSet ).
108
+ Set = sets :from_list (Nodes , [{ version , 2 }] ),
109
+ gc_entity (node_stats , Set ),
110
+ gc_entity (node_coarse_stats , Set ),
111
+ gc_entity (node_persister_stats , Set ),
112
+ gc_entity (node_node_coarse_stats_node_index , Set ),
113
+ gc_entity (node_node_stats , Set ),
114
+ gc_entity (node_node_coarse_stats , Set ).
115
115
116
116
gc_process (Table ) ->
117
117
ets :foldl (fun ({{Pid , _ } = Key , _ }, none ) ->
@@ -133,61 +133,61 @@ gc_process(Pid, Table, Key) ->
133
133
none
134
134
end .
135
135
136
- gc_entity (Table , GbSet ) ->
136
+ gc_entity (Table , Set ) ->
137
137
ets :foldl (fun ({{_ , Id } = Key , _ }, none ) when Table == node_node_stats ->
138
- gc_entity (Id , Table , Key , GbSet );
138
+ gc_entity (Id , Table , Key , Set );
139
139
({{{_ , Id }, _ } = Key , _ }, none ) when Table == node_node_coarse_stats ->
140
- gc_entity (Id , Table , Key , GbSet );
140
+ gc_entity (Id , Table , Key , Set );
141
141
({{Id , _ } = Key , _ }, none ) ->
142
- gc_entity (Id , Table , Key , GbSet );
142
+ gc_entity (Id , Table , Key , Set );
143
143
({Id = Key , _ }, none ) ->
144
- gc_entity (Id , Table , Key , GbSet );
144
+ gc_entity (Id , Table , Key , Set );
145
145
({{Id , _ } = Key , _ }, none ) ->
146
- gc_entity (Id , Table , Key , GbSet )
146
+ gc_entity (Id , Table , Key , Set )
147
147
end , none , Table ).
148
148
149
- gc_entity (Id , Table , Key , GbSet ) ->
150
- case gb_sets : is_member (Id , GbSet ) of
149
+ gc_entity (Id , Table , Key , Set ) ->
150
+ case sets : is_element (Id , Set ) of
151
151
true ->
152
152
none ;
153
153
false ->
154
154
ets :delete (Table , Key ),
155
155
none
156
156
end .
157
157
158
- gc_process_and_entity (Table , GbSet ) ->
158
+ gc_process_and_entity (Table , Set ) ->
159
159
ets :foldl (fun ({{Id , Pid , _ } = Key , _ }, none ) when Table == consumer_stats ->
160
- gc_process_and_entity (Id , Pid , Table , Key , GbSet );
160
+ gc_process_and_entity (Id , Pid , Table , Key , Set );
161
161
({Id = Key , {_ , Pid , _ }} = Object , none )
162
162
when Table == consumer_stats_queue_index ->
163
163
gc_object (Pid , Table , Object ),
164
- gc_entity (Id , Table , Key , GbSet );
164
+ gc_entity (Id , Table , Key , Set );
165
165
({Pid = Key , {Id , _ , _ }} = Object , none )
166
166
when Table == consumer_stats_channel_index ->
167
- gc_object (Id , Table , Object , GbSet ),
167
+ gc_object (Id , Table , Object , Set ),
168
168
gc_process (Pid , Table , Key );
169
169
({Id = Key , {{Pid , _ }, _ }} = Object , none )
170
170
when Table == channel_exchange_stats_fine_stats_exchange_index ;
171
171
Table == channel_queue_stats_deliver_stats_queue_index ->
172
172
gc_object (Pid , Table , Object ),
173
- gc_entity (Id , Table , Key , GbSet );
173
+ gc_entity (Id , Table , Key , Set );
174
174
({Pid = Key , {{_ , Id }, _ }} = Object , none )
175
175
when Table == channel_exchange_stats_fine_stats_channel_index ;
176
176
Table == channel_queue_stats_deliver_stats_channel_index ->
177
- gc_object (Id , Table , Object , GbSet ),
177
+ gc_object (Id , Table , Object , Set ),
178
178
gc_process (Pid , Table , Key );
179
179
({{{Pid , Id }, _ } = Key , _ }, none )
180
180
when Table == channel_queue_stats_deliver_stats ;
181
181
Table == channel_exchange_stats_fine_stats ->
182
- gc_process_and_entity (Id , Pid , Table , Key , GbSet );
182
+ gc_process_and_entity (Id , Pid , Table , Key , Set );
183
183
({{{Pid , Id }, _ } = Key , _ , _ , _ , _ , _ , _ , _ , _ }, none ) ->
184
- gc_process_and_entity (Id , Pid , Table , Key , GbSet );
184
+ gc_process_and_entity (Id , Pid , Table , Key , Set );
185
185
({{{Pid , Id }, _ } = Key , _ , _ , _ , _ }, none ) ->
186
- gc_process_and_entity (Id , Pid , Table , Key , GbSet )
186
+ gc_process_and_entity (Id , Pid , Table , Key , Set )
187
187
end , none , Table ).
188
188
189
- gc_process_and_entity (Id , Pid , Table , Key , GbSet ) ->
190
- case rabbit_misc :is_process_alive (Pid ) andalso gb_sets : is_member (Id , GbSet ) of
189
+ gc_process_and_entity (Id , Pid , Table , Key , Set ) ->
190
+ case rabbit_misc :is_process_alive (Pid ) andalso sets : is_element (Id , Set ) of
191
191
true ->
192
192
none ;
193
193
false ->
@@ -204,26 +204,26 @@ gc_object(Pid, Table, Object) ->
204
204
none
205
205
end .
206
206
207
- gc_object (Id , Table , Object , GbSet ) ->
208
- case gb_sets : is_member (Id , GbSet ) of
207
+ gc_object (Id , Table , Object , Set ) ->
208
+ case sets : is_element (Id , Set ) of
209
209
true ->
210
210
none ;
211
211
false ->
212
212
ets :delete_object (Table , Object ),
213
213
none
214
214
end .
215
215
216
- gc_entities (Table , QueueGbSet , ExchangeGbSet ) ->
216
+ gc_entities (Table , QueueSet , ExchangeSet ) ->
217
217
ets :foldl (fun ({{{Q , X }, _ } = Key , _ }, none )
218
218
when Table == queue_exchange_stats_publish ->
219
- gc_entity (Q , Table , Key , QueueGbSet ),
220
- gc_entity (X , Table , Key , ExchangeGbSet );
219
+ gc_entity (Q , Table , Key , QueueSet ),
220
+ gc_entity (X , Table , Key , ExchangeSet );
221
221
({Q , {{_ , X }, _ }} = Object , none )
222
222
when Table == queue_exchange_stats_publish_queue_index ->
223
- gc_object (X , Table , Object , ExchangeGbSet ),
224
- gc_entity (Q , Table , Q , QueueGbSet );
223
+ gc_object (X , Table , Object , ExchangeSet ),
224
+ gc_entity (Q , Table , Q , QueueSet );
225
225
({X , {{Q , _ }, _ }} = Object , none )
226
226
when Table == queue_exchange_stats_publish_exchange_index ->
227
- gc_object (Q , Table , Object , QueueGbSet ),
228
- gc_entity (X , Table , X , ExchangeGbSet )
227
+ gc_object (Q , Table , Object , QueueSet ),
228
+ gc_entity (X , Table , X , ExchangeSet )
229
229
end , none , Table ).
0 commit comments