diff --git a/ecstore/src/bucket/versioning/mod.rs b/ecstore/src/bucket/versioning/mod.rs index 3444034e4..fb3387cc9 100644 --- a/ecstore/src/bucket/versioning/mod.rs +++ b/ecstore/src/bucket/versioning/mod.rs @@ -19,7 +19,7 @@ impl VersioningApi for VersioningConfiguration { } fn prefix_enabled(&self, prefix: &str) -> bool { - if self.status == Some(BucketVersioningStatus::from_static(BucketVersioningStatus::ENABLED)) { + if self.status != Some(BucketVersioningStatus::from_static(BucketVersioningStatus::ENABLED)) { return false; } diff --git a/ecstore/src/disk/local.rs b/ecstore/src/disk/local.rs index 46dee48a6..3951d7899 100644 --- a/ecstore/src/disk/local.rs +++ b/ecstore/src/disk/local.rs @@ -399,6 +399,7 @@ impl LocalDisk { } /// read xl.meta raw data + #[tracing::instrument(level = "debug", skip(self, volume_dir, path))] async fn read_raw( &self, bucket: &str, @@ -460,6 +461,7 @@ impl LocalDisk { Ok(data) } + #[tracing::instrument(level = "debug", skip(self, volume_dir, file_path))] async fn read_all_data_with_dmtime( &self, volume: &str, diff --git a/ecstore/src/disk/mod.rs b/ecstore/src/disk/mod.rs index 10ceeafb7..6896b751e 100644 --- a/ecstore/src/disk/mod.rs +++ b/ecstore/src/disk/mod.rs @@ -277,6 +277,7 @@ impl DiskAPI for Disk { } } + #[tracing::instrument(level = "debug", skip(self))] async fn read_version( &self, _org_volume: &str, diff --git a/ecstore/src/sets.rs b/ecstore/src/sets.rs index 8dd190839..cc177b771 100644 --- a/ecstore/src/sets.rs +++ b/ecstore/src/sets.rs @@ -273,6 +273,7 @@ struct DelObj { #[async_trait::async_trait] impl ObjectIO for Sets { + #[tracing::instrument(level = "debug", skip(self))] async fn get_object_reader( &self, bucket: &str, @@ -285,6 +286,7 @@ impl ObjectIO for Sets { .get_object_reader(bucket, object, range, h, opts) .await } + #[tracing::instrument(level = "debug", skip(self, data))] async fn put_object(&self, bucket: &str, object: &str, data: &mut PutObjReader, opts: &ObjectOptions) -> Result { self.get_disks_by_key(object).put_object(bucket, object, data, opts).await } diff --git a/ecstore/src/store.rs b/ecstore/src/store.rs index 9787a4ad9..cf6e9f5b5 100644 --- a/ecstore/src/store.rs +++ b/ecstore/src/store.rs @@ -1083,6 +1083,7 @@ impl ObjectIO for ECStore { .get_object_reader(bucket, object.as_str(), range, h, &opts) .await } + #[tracing::instrument(level = "debug", skip(self, data))] async fn put_object(&self, bucket: &str, object: &str, data: &mut PutObjReader, opts: &ObjectOptions) -> Result { check_put_object_args(bucket, object)?; diff --git a/rustfs/src/storage/ecfs.rs b/rustfs/src/storage/ecfs.rs index 8241b2353..bc69569a1 100644 --- a/rustfs/src/storage/ecfs.rs +++ b/rustfs/src/storage/ecfs.rs @@ -303,14 +303,21 @@ impl S3 for FS { let range = HTTPRangeSpec::nil(); let h = HeaderMap::new(); - let opts = &ObjectOptions::default(); + + let metadata = extract_metadata(&req.headers); + + let opts: ObjectOptions = put_opts(&bucket, &key, None, &req.headers, Some(metadata)) + .await + .map_err(to_s3_error)?; + + error!("get_object ObjectOptions {:?}", &opts); let Some(store) = new_object_layer_fn() else { return Err(S3Error::with_message(S3ErrorCode::InternalError, "Not init".to_string())); }; let reader = store - .get_object_reader(bucket.as_str(), key.as_str(), range, h, opts) + .get_object_reader(bucket.as_str(), key.as_str(), range, h, &opts) .await .map_err(to_s3_error)?; @@ -574,6 +581,8 @@ impl S3 for FS { .await .map_err(to_s3_error)?; + error!("ObjectOptions {:?}", opts); + let obj_info = store .put_object(&bucket, &key, &mut reader, &opts) .await