@@ -549,10 +549,12 @@ start(VHost, DurableQueueNames) ->
549
549
sets :add_element (DirName , ValidDirectories )}
550
550
end , {[], sets :new ()}, DurableQueueNames ),
551
551
% % Any queue directory we've not been asked to recover is considered garbage
552
- _ = rabbit_file :recursive_delete (
553
- [DirName ||
554
- DirName <- all_queue_directory_names (VHost ),
555
- not sets :is_element (filename :basename (DirName ), DurableDirectories )]),
552
+ ToDelete = [filename :join ([rabbit_vhost :msg_store_dir_path (VHost ), " queues" , Dir ])
553
+ || Dir <- lists :subtract (all_queue_directory_names (VHost ),
554
+ sets :to_list (DurableDirectories ))],
555
+ rabbit_log :debug (" Deleting unknown files/folders: ~p " , [ToDelete ]),
556
+ _ = rabbit_file :recursive_delete (ToDelete ),
557
+
556
558
rabbit_recovery_terms :clear (VHost ),
557
559
558
560
% % The backing queue interface requires that the queue recovery terms
@@ -564,8 +566,13 @@ start(VHost, DurableQueueNames) ->
564
566
stop (VHost ) -> rabbit_recovery_terms :stop (VHost ).
565
567
566
568
all_queue_directory_names (VHost ) ->
567
- filelib :wildcard (filename :join ([rabbit_vhost :msg_store_dir_path (VHost ),
568
- " queues" , " *" ])).
569
+ VHostQueuesPath = filename :join ([rabbit_vhost :msg_store_dir_path (VHost ), " queues" ]),
570
+ case filelib :is_dir (VHostQueuesPath ) of
571
+ true ->
572
+ {ok , Dirs } = file :list_dir (VHostQueuesPath ),
573
+ Dirs ;
574
+ false -> []
575
+ end .
569
576
570
577
% %----------------------------------------------------------------------------
571
578
% % startup and shutdown
0 commit comments