]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/tracer: fix decoding when jaeger tracing is disabled 51043/head
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Wed, 12 Apr 2023 09:39:52 +0000 (09:39 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Thu, 13 Apr 2023 10:59:14 +0000 (10:59 +0000)
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 <lpetrut@cloudbasesolutions.com>
src/common/tracer.h

index f0a4df512077676340e42c798e52762c7bd4f8c6..87f3e5d98d024361e2b0add10c0f7d6eb8aa5b8e 100644 (file)
@@ -144,8 +144,21 @@ struct Tracer {
   jspan add_span(std::string_view span_name, const jspan_context& parent_ctx) { return {}; }
   void init(std::string_view service_name) {}
 };
-  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