diff options
-rw-r--r-- | doc/radosgw/bucket_logging.rst | 6 | ||||
-rw-r--r-- | src/rgw/rgw_rest_bucket_logging.cc | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/doc/radosgw/bucket_logging.rst b/doc/radosgw/bucket_logging.rst index 1ac4e546a4c..df469497383 100644 --- a/doc/radosgw/bucket_logging.rst +++ b/doc/radosgw/bucket_logging.rst @@ -15,6 +15,12 @@ The log bucket can accumulate logs from multiple buckets. It is recommended to c a different "prefix" for each bucket, so that the logs of different buckets will be stored in different objects in the log bucket. +.. note:: + + - The log bucket must be created before enabling logging on a bucket + - The log bucket cannot be the same as the bucket being logged + - The log bucket cannot have logging enabled on it + .. toctree:: :maxdepth: 1 diff --git a/src/rgw/rgw_rest_bucket_logging.cc b/src/rgw/rgw_rest_bucket_logging.cc index 0e7b53120db..5689a7acc56 100644 --- a/src/rgw/rgw_rest_bucket_logging.cc +++ b/src/rgw/rgw_rest_bucket_logging.cc @@ -181,6 +181,11 @@ class RGWPutBucketLoggingOp : public RGWDefaultResponseOp { return; } const rgw_bucket target_bucket_id(target_tenant_name, target_bucket_name); + if (target_bucket_id == src_bucket_id) { + ldpp_dout(this, 1) << "ERROR: target bucket '" << target_bucket_id << "' must be different from source bucket" << dendl; + op_ret = -EINVAL; + return; + } std::unique_ptr<rgw::sal::Bucket> target_bucket; op_ret = driver->load_bucket(this, target_bucket_id, &target_bucket, y); |