diff --git a/src/server/pegasus_manual_compact_service.cpp b/src/server/pegasus_manual_compact_service.cpp index 643e3e9978..0d5e79dd21 100644 --- a/src/server/pegasus_manual_compact_service.cpp +++ b/src/server/pegasus_manual_compact_service.cpp @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -301,6 +302,20 @@ void pegasus_manual_compact_service::manual_compact(const rocksdb::CompactRangeO LOG_INFO_PREFIX("ignored compact because exceed max_concurrent_running_count({})", _max_concurrent_running_count.load()); _manual_compact_enqueue_time_ms.store(0); + + _pfc_manual_compact_enqueue_count->increment(); + int loop_enqueue_time = now_timestamp() + 60 * 1000; + _manual_compact_enqueue_time_ms.store(loop_enqueue_time); + dsn::tasking::enqueue(LPC_MANUAL_COMPACT, + &_app->_tracker, + [this, options]() { + _pfc_manual_compact_enqueue_count->decrement(); + manual_compact(options); + }, + 0, + std::chrono::seconds(60)); + LOG_INFO_PREFIX("retry 60 seconds later,now task enqueue time({})ms", + _manual_compact_enqueue_time_ms.load()); return; }