diff --git a/src/v/storage/disk_log_impl.cc b/src/v/storage/disk_log_impl.cc index bfa4fded9b225..be91b7bea0f65 100644 --- a/src/v/storage/disk_log_impl.cc +++ b/src/v/storage/disk_log_impl.cc @@ -101,8 +101,8 @@ ss::future<> disk_log_impl::remove() { remove_segment_permanently(s, "disk_log_impl::remove()")); } - co_await _readers_cache->stop().then( - [this, permanent_delete = std::move(permanent_delete)]() mutable { + co_await _readers_cache->stop() + .then([this, permanent_delete = std::move(permanent_delete)]() mutable { // wait for all futures return ss::when_all_succeed( permanent_delete.begin(), permanent_delete.end()) @@ -119,7 +119,8 @@ ss::future<> disk_log_impl::remove() { kvstore::key_space::storage, internal::clean_segment_key(config().ntp())); }); - }); + }) + .finally([this] { _probe.clear_metrics(); }); } ss::future> disk_log_impl::close() { @@ -154,6 +155,8 @@ ss::future> disk_log_impl::close() { }); }); + _probe.clear_metrics(); + if (_segs.size() && !errors) { auto clean_seg = _segs.back()->filename(); vlog( diff --git a/src/v/storage/probe.h b/src/v/storage/probe.h index 50a3c95ad2530..3278daa7a9f22 100644 --- a/src/v/storage/probe.h +++ b/src/v/storage/probe.h @@ -93,6 +93,11 @@ class probe { void remove_partition_bytes(size_t remove) { _partition_bytes -= remove; } void set_compaction_ratio(double r) { _compaction_ratio = r; } + /** + * Clears all probe related metrics + */ + void clear_metrics() { _metrics.clear(); } + private: uint64_t _partition_bytes = 0; uint64_t _bytes_written = 0;