@@ -736,29 +736,30 @@ impl RouteInfoManager {
736736
737737 pub ( crate ) fn delete_topic (
738738 & mut self ,
739- topic : impl Into < String > ,
740- cluster_name : Option < impl Into < String > > ,
739+ topic : CheetahString ,
740+ cluster_name : Option < CheetahString > ,
741741 ) {
742- let topic_inner = topic . into ( ) ;
743- if cluster_name. is_some ( ) {
744- let cluster_name_inner = cluster_name. map ( |s| s . into ( ) ) . unwrap ( ) ;
745- let broker_names = self . cluster_addr_table . get ( cluster_name_inner. as_str ( ) ) ;
742+ let lock = self . lock . write ( ) ;
743+ if cluster_name. as_ref ( ) . is_some_and ( |inner| !inner . is_empty ( ) ) {
744+ let cluster_name_inner = cluster_name. unwrap ( ) ;
745+ let broker_names = self . cluster_addr_table . get ( & cluster_name_inner) ;
746746 if broker_names. is_none ( ) || broker_names. unwrap ( ) . is_empty ( ) {
747747 return ;
748748 }
749- if let Some ( queue_data_map) = self . topic_queue_table . get_mut ( topic_inner . as_str ( ) ) {
749+ if let Some ( queue_data_map) = self . topic_queue_table . mut_from_ref ( ) . get_mut ( & topic ) {
750750 for broker_name in broker_names. unwrap ( ) {
751751 if let Some ( remove_qd) = queue_data_map. remove ( broker_name) {
752752 info ! (
753753 "deleteTopic, remove one broker's topic {} {} {:?}" ,
754- broker_name, & topic_inner , remove_qd
754+ broker_name, & topic , remove_qd
755755 )
756756 }
757757 }
758758 }
759759 } else {
760- self . topic_queue_table . remove ( topic_inner . as_str ( ) ) ;
760+ self . topic_queue_table . mut_from_ref ( ) . remove ( & topic ) ;
761761 }
762+ drop ( lock)
762763 }
763764
764765 pub ( crate ) fn register_topic ( & mut self , topic : CheetahString , queue_data_vec : Vec < QueueData > ) {
0 commit comments