refactor: prefer app context object store in ecfs (#3433)

This commit is contained in:
安正超
2026-06-14 15:52:26 +08:00
committed by GitHub
parent 046d5386ba
commit 5e68cf8a29
2 changed files with 45 additions and 38 deletions
+24 -24
View File
@@ -13,6 +13,7 @@
// limitations under the License.
use crate::app::bucket_usecase::DefaultBucketUsecase;
use crate::app::context::resolve_object_store_handle;
use crate::app::multipart_usecase::DefaultMultipartUsecase;
use crate::app::object_usecase::DefaultObjectUsecase;
use crate::error::ApiError;
@@ -39,7 +40,6 @@ use rustfs_ecstore::{
versioning_sys::BucketVersioningSys,
},
error::{StorageError, is_err_bucket_not_found, is_err_object_not_found, is_err_version_not_found},
new_object_layer_fn,
store_api::{BucketOperations, ObjectLockRetentionOptions, ObjectOperations, ObjectOptions},
};
use rustfs_io_metrics::record_s3_op;
@@ -105,7 +105,7 @@ impl FS {
object: &str,
version_id: Option<&str>,
) -> S3Result<std::collections::HashMap<String, Vec<String>>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Ok(std::collections::HashMap::new());
};
let opts = ObjectOptions {
@@ -349,7 +349,7 @@ impl S3 for FS {
&self,
req: S3Request<DeleteBucketWebsiteInput>,
) -> S3Result<S3Response<DeleteBucketWebsiteOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
@@ -398,7 +398,7 @@ impl S3 for FS {
validate_table_catalog_object_mutation(&bucket, &object).await?;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
error!(
component = LOG_COMPONENT_STORAGE,
subsystem = LOG_SUBSYSTEM_TAGGING,
@@ -479,7 +479,7 @@ impl S3 for FS {
record_s3_op(S3Operation::GetBucketAcl, &req.input.bucket);
let GetBucketAclInput { bucket, .. } = req.input;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -495,7 +495,7 @@ impl S3 for FS {
&self,
req: S3Request<GetBucketAccelerateConfigurationInput>,
) -> S3Result<S3Response<GetBucketAccelerateConfigurationOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
@@ -585,7 +585,7 @@ impl S3 for FS {
&self,
req: S3Request<GetBucketRequestPaymentInput>,
) -> S3Result<S3Response<GetBucketRequestPaymentOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
@@ -633,7 +633,7 @@ impl S3 for FS {
}
async fn get_bucket_website(&self, req: S3Request<GetBucketWebsiteInput>) -> S3Result<S3Response<GetBucketWebsiteOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
@@ -671,7 +671,7 @@ impl S3 for FS {
bucket, key, version_id, ..
} = req.input;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -701,7 +701,7 @@ impl S3 for FS {
bucket, key, version_id, ..
} = req.input.clone();
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -762,7 +762,7 @@ impl S3 for FS {
record_s3_op(S3Operation::GetObjectLockConfiguration, &req.input.bucket);
let GetObjectLockConfigurationInput { bucket, .. } = req.input;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -810,7 +810,7 @@ impl S3 for FS {
bucket, key, version_id, ..
} = req.input.clone();
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -862,7 +862,7 @@ impl S3 for FS {
let bucket = req.input.bucket.as_str();
let object = req.input.key.as_str();
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
error!(
component = LOG_COMPONENT_STORAGE,
subsystem = LOG_SUBSYSTEM_TAGGING,
@@ -1020,7 +1020,7 @@ impl S3 for FS {
} = req.input;
record_s3_op(S3Operation::PutBucketAcl, &bucket);
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -1043,7 +1043,7 @@ impl S3 for FS {
&self,
req: S3Request<PutBucketAccelerateConfigurationInput>,
) -> S3Result<S3Response<PutBucketAccelerateConfigurationOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
store
@@ -1068,7 +1068,7 @@ impl S3 for FS {
async fn get_bucket_logging(&self, req: S3Request<GetBucketLoggingInput>) -> S3Result<S3Response<GetBucketLoggingOutput>> {
record_s3_op(S3Operation::GetBucketLogging, &req.input.bucket);
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
store
@@ -1087,7 +1087,7 @@ impl S3 for FS {
async fn put_bucket_logging(&self, req: S3Request<PutBucketLoggingInput>) -> S3Result<S3Response<PutBucketLoggingOutput>> {
record_s3_op(S3Operation::PutBucketLogging, &req.input.bucket);
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
store
@@ -1146,7 +1146,7 @@ impl S3 for FS {
&self,
req: S3Request<PutBucketRequestPaymentInput>,
) -> S3Result<S3Response<PutBucketRequestPaymentOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
store
@@ -1188,7 +1188,7 @@ impl S3 for FS {
}
async fn put_bucket_website(&self, req: S3Request<PutBucketWebsiteInput>) -> S3Result<S3Response<PutBucketWebsiteOutput>> {
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(s3_error!(InternalError, "Not init"));
};
store
@@ -1218,7 +1218,7 @@ impl S3 for FS {
let key = &req.input.key;
let version_id = req.input.version_id.clone();
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -1260,7 +1260,7 @@ impl S3 for FS {
validate_table_catalog_object_mutation(&bucket, &key).await?;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -1313,7 +1313,7 @@ impl S3 for FS {
let Some(input_cfg) = object_lock_configuration else { return Err(s3_error!(InvalidArgument)) };
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -1384,7 +1384,7 @@ impl S3 for FS {
validate_table_catalog_object_mutation(&bucket, &key).await?;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};
@@ -1462,7 +1462,7 @@ impl S3 for FS {
crate::storage::s3_api::tagging::validate_object_tag_set(&tagging.tag_set)?;
let Some(store) = new_object_layer_fn() else {
let Some(store) = resolve_object_store_handle() else {
return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string()));
};