From b761e1c561438aaf77ef36fc73f49f7389488aa0 Mon Sep 17 00:00:00 2001 From: zhang Shaowen Date: Thu, 5 Sep 2019 14:22:18 +0800 Subject: [PATCH] rgw: add transaction id to ops log. Fixes: https://tracker.ceph.com/issues/39262 Signed-off-by: zhang Shaowen --- src/rgw/rgw_dencoder.cc | 1 + src/rgw/rgw_json_enc.cc | 1 + src/rgw/rgw_log.cc | 2 ++ src/rgw/rgw_log.h | 9 +++++++-- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_dencoder.cc b/src/rgw/rgw_dencoder.cc index 41216fe91b2..867b504fb4a 100644 --- a/src/rgw/rgw_dencoder.cc +++ b/src/rgw/rgw_dencoder.cc @@ -232,6 +232,7 @@ void rgw_log_entry::generate_test_instances(list& o) e->user_agent = "user_agent"; e->referrer = "referrer"; e->bucket_id = "10"; + e->trans_id = "trans_id"; o.push_back(e); o.push_back(new rgw_log_entry); } diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index 6b4756cda90..837d7b00c17 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -167,6 +167,7 @@ void rgw_log_entry::dump(Formatter *f) const f->dump_string("user_agent", user_agent); f->dump_string("referrer", referrer); f->dump_string("bucket_id", bucket_id); + f->dump_string("trans_id", trans_id); } void ACLPermission::dump(Formatter *f) const diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 2b0b59eb6fb..19ba62ddc1f 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -273,6 +273,7 @@ void rgw_format_ops_log_entry(struct rgw_log_entry& entry, Formatter *formatter) } formatter->close_section(); } + formatter->dump_string("trans_id", entry.trans_id); formatter->close_section(); } @@ -426,6 +427,7 @@ int rgw_log_op(RGWRados *store, RGWREST* const rest, struct req_state *s, entry.error_code = s->err.err_code; entry.bucket_id = bucket_id; + entry.trans_id = s->trans_id; bufferlist bl; encode(entry, bl); diff --git a/src/rgw/rgw_log.h b/src/rgw/rgw_log.h index 5cd105d7e01..9c804102020 100644 --- a/src/rgw/rgw_log.h +++ b/src/rgw/rgw_log.h @@ -34,9 +34,10 @@ struct rgw_log_entry { string referrer; string bucket_id; headers_map x_headers; + string trans_id; void encode(bufferlist &bl) const { - ENCODE_START(9, 5, bl); + ENCODE_START(10, 5, bl); encode(object_owner.id, bl); encode(bucket_owner.id, bl); encode(bucket, bl); @@ -59,10 +60,11 @@ struct rgw_log_entry { encode(object_owner, bl); encode(bucket_owner, bl); encode(x_headers, bl); + encode(trans_id, bl); ENCODE_FINISH(bl); } void decode(bufferlist::const_iterator &p) { - DECODE_START_LEGACY_COMPAT_LEN(8, 5, 5, p); + DECODE_START_LEGACY_COMPAT_LEN(10, 5, 5, p); decode(object_owner.id, p); if (struct_v > 3) decode(bucket_owner.id, p); @@ -108,6 +110,9 @@ struct rgw_log_entry { if (struct_v >= 9) { decode(x_headers, p); } + if (struct_v >= 10) { + decode(trans_id, p); + } DECODE_FINISH(p); } void dump(Formatter *f) const; -- 2.39.5