@@ -851,8 +851,6 @@ impl<S: Storage> SyncEngine<S> {
851
851
852
852
#[ instrument( level = tracing:: Level :: TRACE , skip_all) ]
853
853
pub fn delete ( & mut self , filter : DeleteFilter ) -> Result < DeleteMetrics , AnyError > {
854
- // TODO: clean up resources as well
855
-
856
854
let root_spans =
857
855
self . get_root_spans_in_range_filter ( filter. start , filter. end , filter. inside ) ;
858
856
let root_events =
@@ -931,6 +929,35 @@ impl<S: Storage> SyncEngine<S> {
931
929
self . remove_span_events_bookeeping ( & span_events_to_delete) ;
932
930
self . remove_events_bookeeping ( & events_to_delete) ;
933
931
932
+ let resources_to_delete = self
933
+ . resources
934
+ . keys ( )
935
+ . copied ( )
936
+ . filter ( |resource_key| {
937
+ let used_by_spans = self
938
+ . span_indexes
939
+ . resources
940
+ . get ( resource_key)
941
+ . is_some_and ( |r| !r. is_empty ( ) ) ;
942
+
943
+ let used_by_events = self
944
+ . event_indexes
945
+ . resources
946
+ . get ( resource_key)
947
+ . is_some_and ( |r| !r. is_empty ( ) ) ;
948
+
949
+ !used_by_spans && !used_by_events
950
+ } )
951
+ . collect :: < Vec < _ > > ( ) ;
952
+
953
+ self . storage
954
+ . drop_resources ( & resources_to_delete)
955
+ . context ( "failed to drop events" ) ?;
956
+
957
+ for resource_key in resources_to_delete {
958
+ self . resources . remove ( & resource_key) ;
959
+ }
960
+
934
961
Ok ( DeleteMetrics {
935
962
spans : spans_to_delete. len ( ) ,
936
963
span_events : span_events_to_delete. len ( ) ,
0 commit comments