From f7b72d43d87325714de7762e66df8530852129fc Mon Sep 17 00:00:00 2001 From: Oguzhan Ozmen Date: Fri, 15 Sep 2023 13:25:52 -0400 Subject: [PATCH] rgw/ops-log: explicitly specify object name in the log entry Pseudo-directories can be used when naming an object (key): e.g., "my/weird/object.txt". This would lead to cases where the name of the object cannot be derived deterministically. For example, if an object name uses pseudo-directories and starts with "/" and virtual-host style is used when accessing object, we cannot figure out the name of the object. Note that in DNS (virtual host) style bucket naming, since bucket name is specified as a part of the host name, URI doesn't contain any reference to the bucket. boto_client = boto3.client(..., config=Config(s3={'addressing_style': 'virtual'})) boto_client.put_object( Body=b"this is the data", Key="my-bucket/my-object", Bucket="my-bucket" ) The corresponding log entry is { ..., "bucket":"my-bucket", ..., "uri":"PUT /my-bucket/my-object HTTP/1.1", ... } We can falsely conclude that the name of the object is "my-object". By having the name of the object listed in the log-entry, we address this ambiguity. Signed-off-by: Oguzhan Ozmen --- src/rgw/rgw_log.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 1a3096f164c..9bc27bbe9ff 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -251,6 +251,7 @@ void rgw_format_ops_log_entry(struct rgw_log_entry& entry, Formatter *formatter) { formatter->open_object_section("log_entry"); formatter->dump_string("bucket", entry.bucket); + formatter->dump_string("object", entry.obj.name); { auto t = utime_t{entry.time}; t.gmtime(formatter->dump_stream("time")); // UTC -- 2.39.5