fix(scanner): scope long walk timeouts (#4376)

* fix(scanner): scope long walk timeouts

* fix(scanner): bound IAM config walks

---------

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-07-08 17:06:51 +08:00
committed by GitHub
parent 7fb95d4fc0
commit 506cd156bb
11 changed files with 236 additions and 18 deletions
+13
View File
@@ -14,6 +14,7 @@
use std::fmt;
use std::sync::Arc;
use std::time::Duration;
use crate::replication::{
ReplicationState, ReplicationStatusType, VersionPurgeStatusType, replication_statuses_map, version_purge_statuses_map,
@@ -238,6 +239,8 @@ pub struct WalkOptions<Filter> {
pub versions_sort: WalkVersionsSortOrder,
pub limit: usize,
pub include_free_versions: bool,
pub walkdir_timeout: Option<Duration>,
pub walkdir_stall_timeout: Option<Duration>,
}
impl<Filter> Default for WalkOptions<Filter> {
@@ -250,10 +253,20 @@ impl<Filter> Default for WalkOptions<Filter> {
versions_sort: WalkVersionsSortOrder::default(),
limit: 0,
include_free_versions: false,
walkdir_timeout: None,
walkdir_stall_timeout: None,
}
}
}
impl<Filter> WalkOptions<Filter> {
pub fn with_walkdir_timeouts(mut self, timeout: Duration) -> Self {
self.walkdir_timeout = Some(timeout);
self.walkdir_stall_timeout = Some(timeout);
self
}
}
#[async_trait::async_trait]
pub trait ObjectIO: Send + Sync + fmt::Debug + 'static {
type Error: std::error::Error + Send + Sync + 'static;