From: Lucian Petrut Date: Wed, 12 Apr 2023 09:39:52 +0000 (+0000) Subject: common/tracer: fix decoding when jaeger tracing is disabled X-Git-Tag: v20.0.0~2575^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e1452649b8e765e5ab1efdd71fe1d15461b6ef14;p=ceph.git common/tracer: fix decoding when jaeger tracing is disabled We aren't currently using jaeger tracing on Windows. The issue is that Windows hosts (or any other host that doesn't use jaeger) are experiencing message decoding failures after a recent change [1]. This change updates the tracer encoding so that messages from non-jaeger hosts may be decoded by services that use jaeger. [1] https://github.com/ceph/ceph/pull/47457 Signed-off-by: Lucian Petrut This commit rebrings 3701ffa6733b001d4278a0b68395c5efe2382f25 which got reverted due to an implicit dependency with other revert. Please see https://github.com/ceph/ceph/pull/52114#issuecomment-1950288188. Conflicts: src/common/tracer.h formatting conflict with 7179ac0037320480f089e1a9e291cdc37282d250 --- diff --git a/src/common/tracer.h b/src/common/tracer.h index b039d304a79a8..ee0b744075454 100644 --- a/src/common/tracer.h +++ b/src/common/tracer.h @@ -152,9 +152,20 @@ struct Tracer { jspan_ptr add_span(std::string_view span_name, const jspan_context& parent_ctx) { return {}; } }; -inline void encode(const jspan_context& span, bufferlist& bl, uint64_t f=0) {} -inline void decode(jspan_context& span_ctx, ceph::buffer::list::const_iterator& bl) {} +inline void encode(const jspan_context& span_ctx, bufferlist& bl, uint64_t f = 0) { + ENCODE_START(1, 1, bl); + // jaeger is missing, set "is_valid" to false. + bool is_valid = false; + encode(is_valid, bl); + ENCODE_FINISH(bl); +} +inline void decode(jspan_context& span_ctx, bufferlist::const_iterator& bl) { + DECODE_START(254, bl); + // jaeger is missing, consume the buffer but do not decode it. + DECODE_FINISH(bl); } +} // namespace tracing + #endif // !HAVE_JAEGER