Skip to content

Commit 6f4e848

Browse files
committed
fix: clean up resources on delete
1 parent 214de88 commit 6f4e848

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

venator-engine/src/engine/sync_engine.rs

+29-2
Original file line numberDiff line numberDiff line change
@@ -851,8 +851,6 @@ impl<S: Storage> SyncEngine<S> {
851851

852852
#[instrument(level = tracing::Level::TRACE, skip_all)]
853853
pub fn delete(&mut self, filter: DeleteFilter) -> Result<DeleteMetrics, AnyError> {
854-
// TODO: clean up resources as well
855-
856854
let root_spans =
857855
self.get_root_spans_in_range_filter(filter.start, filter.end, filter.inside);
858856
let root_events =
@@ -931,6 +929,35 @@ impl<S: Storage> SyncEngine<S> {
931929
self.remove_span_events_bookeeping(&span_events_to_delete);
932930
self.remove_events_bookeeping(&events_to_delete);
933931

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+
934961
Ok(DeleteMetrics {
935962
spans: spans_to_delete.len(),
936963
span_events: span_events_to_delete.len(),

0 commit comments

Comments
 (0)