refactor(app): route buffer config through AppContext (#1964)

This commit is contained in:
安正超
2026-02-26 09:19:59 +08:00
committed by GitHub
parent 1a549d78ca
commit 1c01c3d73a
2 changed files with 36 additions and 2 deletions
+10 -2
View File
@@ -16,7 +16,7 @@
#![allow(dead_code)]
use crate::app::context::{AppContext, default_notify_interface, get_global_app_context};
use crate::config::workload_profiles::get_global_buffer_config;
use crate::config::workload_profiles::RustFSBufferConfig;
use crate::error::ApiError;
use crate::storage::access::{ReqInfo, authorize_request, has_bypass_governance_header};
use crate::storage::concurrency::{
@@ -204,6 +204,14 @@ impl DefaultObjectUsecase {
self.context.as_ref().and_then(|context| context.bucket_metadata().handle())
}
fn base_buffer_size(&self) -> usize {
self.context
.clone()
.or_else(get_global_app_context)
.map(|context| context.buffer_config().get().base_config.default_unknown)
.unwrap_or_else(|| RustFSBufferConfig::default().base_config.default_unknown)
}
#[instrument(level = "debug", skip(self, fs, req))]
pub async fn execute_put_object(&self, fs: &FS, req: S3Request<PutObjectInput>) -> S3Result<S3Response<PutObjectOutput>> {
if let Some(context) = &self.context {
@@ -1194,7 +1202,7 @@ impl DefaultObjectUsecase {
// Calculate adaptive I/O strategy from permit wait time
// This adjusts buffer sizes, read-ahead, and caching behavior based on load
// Use 256KB as the base buffer size for strategy calculation
let base_buffer_size = get_global_buffer_config().base_config.default_unknown;
let base_buffer_size = self.base_buffer_size();
let io_strategy = manager.calculate_io_strategy(permit_wait_duration, base_buffer_size);
// Record detailed I/O metrics for monitoring