@@ -54,7 +54,9 @@ use crate::HTTP_CLIENT;
5454use super :: base_path_without_preceding_slash;
5555use super :: ingest:: PostError ;
5656use super :: logstream:: error:: StreamError ;
57- use super :: modal:: { IndexerMetadata , IngestorMetadata , Metadata , NodeMetadata , QuerierMetadata } ;
57+ use super :: modal:: {
58+ IndexerMetadata , IngestorMetadata , Metadata , NodeMetadata , NodeType , QuerierMetadata ,
59+ } ;
5860use super :: rbac:: RBACError ;
5961use super :: role:: RoleError ;
6062
@@ -718,37 +720,41 @@ pub async fn remove_node(node_url: Path<String>) -> Result<impl Responder, PostE
718720
719721 // Delete ingestor metadata
720722 let removed_ingestor =
721- remove_node_metadata :: < IngestorMetadata > ( & object_store, & domain_name) . await ?;
723+ remove_node_metadata :: < IngestorMetadata > ( & object_store, & domain_name, NodeType :: Ingestor )
724+ . await ?;
722725
723726 // Delete indexer metadata
724727 let removed_indexer =
725- remove_node_metadata :: < IndexerMetadata > ( & object_store, & domain_name) . await ?;
728+ remove_node_metadata :: < IndexerMetadata > ( & object_store, & domain_name, NodeType :: Indexer )
729+ . await ?;
726730
727731 // Delete querier metadata
728732 let removed_querier =
729- remove_node_metadata :: < QuerierMetadata > ( & object_store, & domain_name) . await ?;
730-
731- let msg = if removed_ingestor || removed_indexer || removed_querier {
732- format ! ( "node {} removed successfully" , domain_name)
733- } else {
734- format ! ( "node {} is not found" , domain_name)
735- } ;
736-
737- info ! ( "{}" , & msg) ;
738- Ok ( ( msg, StatusCode :: OK ) )
733+ remove_node_metadata :: < QuerierMetadata > ( & object_store, & domain_name, NodeType :: Querier )
734+ . await ?;
735+
736+ if removed_ingestor || removed_indexer || removed_querier {
737+ return Ok ( (
738+ format ! ( "node {} removed successfully" , domain_name) ,
739+ StatusCode :: OK ,
740+ ) ) ;
741+ }
742+ Err ( PostError :: Invalid ( anyhow:: anyhow!(
743+ "node {} not found" ,
744+ domain_name
745+ ) ) )
739746}
740747
741748// Helper function to remove a specific type of node metadata
742749async fn remove_node_metadata < T : Metadata + DeserializeOwned + Default > (
743750 object_store : & Arc < dyn ObjectStorage > ,
744751 domain_name : & str ,
752+ node_type : NodeType ,
745753) -> Result < bool , PostError > {
746- let node_type = T :: default ( ) . node_type ( ) . to_string ( ) ;
747-
748754 let metadatas = object_store
749755 . get_objects (
750756 Some ( & RelativePathBuf :: from ( PARSEABLE_ROOT_DIRECTORY ) ) ,
751- Box :: new ( move |file_name| file_name. starts_with ( & node_type) ) ,
757+ Box :: new ( move |file_name| file_name. starts_with ( & node_type. to_string ( ) ) ) ,
752758 )
753759 . await ?;
754760
0 commit comments