@@ -54,7 +54,9 @@ use crate::HTTP_CLIENT;
54
54
use super :: base_path_without_preceding_slash;
55
55
use super :: ingest:: PostError ;
56
56
use 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
+ } ;
58
60
use super :: rbac:: RBACError ;
59
61
use super :: role:: RoleError ;
60
62
@@ -718,37 +720,41 @@ pub async fn remove_node(node_url: Path<String>) -> Result<impl Responder, PostE
718
720
719
721
// Delete ingestor metadata
720
722
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 ?;
722
725
723
726
// Delete indexer metadata
724
727
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 ?;
726
730
727
731
// Delete querier metadata
728
732
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
+ ) ) )
739
746
}
740
747
741
748
// Helper function to remove a specific type of node metadata
742
749
async fn remove_node_metadata < T : Metadata + DeserializeOwned + Default > (
743
750
object_store : & Arc < dyn ObjectStorage > ,
744
751
domain_name : & str ,
752
+ node_type : NodeType ,
745
753
) -> Result < bool , PostError > {
746
- let node_type = T :: default ( ) . node_type ( ) . to_string ( ) ;
747
-
748
754
let metadatas = object_store
749
755
. get_objects (
750
756
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 ( ) ) ) ,
752
758
)
753
759
. await ?;
754
760
0 commit comments