fix: handle stall metrics

This commit is contained in:
Lei, HUANG
2024-12-13 11:08:11 +08:00
parent 7139ba08c8
commit 0c302ba127
2 changed files with 2 additions and 2 deletions

View File

@@ -795,12 +795,10 @@ impl<S: LogStore> RegionWorkerLoop<S> {
let handle_start = Instant::now();
if self.flush_receiver.has_changed().unwrap_or(false) {
let start = Instant::now();
// Always checks whether we could process stalled requests to avoid a request
// hangs too long.
// If the channel is closed, do nothing.
self.handle_stalled_requests().await;
self.metrics.handle_stall_cost = start.elapsed();
}
// Try to recv more requests from the channel.

View File

@@ -131,6 +131,7 @@ impl<S: LogStore> RegionWorkerLoop<S> {
/// Handles all stalled write requests.
pub(crate) async fn handle_stalled_requests(&mut self) {
let handle_stall_start = Instant::now();
if let Some(start) = self.stall_start.take() {
self.metrics.stall_cost += start.elapsed();
}
@@ -142,6 +143,7 @@ impl<S: LogStore> RegionWorkerLoop<S> {
self.metrics.num_stalled_request_processed += requests.len();
self.handle_write_requests(requests, false).await;
}
self.metrics.handle_stall_cost += handle_stall_start.elapsed();
}
/// Rejects all stalled requests.