Skip to content

Commit 7375aa7

Browse files
committed
force sampling when debug flag is set
1 parent 2fba3f0 commit 7375aa7

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

examples/simple_proxy/main.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,10 @@ void reply_json_response(struct mg_connection *nc, struct http_message *hm)
291291
{
292292
zipkin_span_set_sampled(span, strtoul(hv->p, NULL, 10));
293293
}
294+
else if (0 == mg_vcmp(hn, ZIPKIN_X_FLAGS))
295+
{
296+
zipkin_span_set_debug(span, strtoul(hv->p, NULL, 10) & ZIPKIN_X_FLAG_DEBUG);
297+
}
294298

295299
mg_printf(nc, "%s\"%.*s\": \"%.*s\"", (i != 0 ? "," : ""), (int)hn->len, hn->p, (int)hv->len, hv->p);
296300
}

include/zipkin.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@
6060
#define ZIPKIN_X_SAMPLED "X-B3-Sampled" ///< Boolean (either “1” or “0”, can be absent)
6161
#define ZIPKIN_X_FLAGS "X-B3-Flags" ///< “1” means debug (can be absent)
6262

63+
#define ZIPKIN_X_FLAG_DEBUG (1 << 0)
64+
6365
typedef uint64_t zipkin_span_id_t;
6466
typedef uint64_t zipkin_trace_id_t;
6567
typedef void *zipkin_userdata_t;
@@ -113,6 +115,7 @@ zipkin_span_t zipkin_span_set_trace_id_high(zipkin_span_t span, zipkin_trace_id_
113115
zipkin_span_t zipkin_span_parse_trace_id(zipkin_span_t span, const char *str, size_t len);
114116

115117
int zipkin_span_debug(zipkin_span_t span);
118+
zipkin_span_t zipkin_span_set_debug(zipkin_span_t span, int debug);
116119

117120
int zipkin_span_sampled(zipkin_span_t span);
118121
zipkin_span_t zipkin_span_set_sampled(zipkin_span_t span, int sampled);

src/CApi.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,13 @@ int zipkin_span_debug(zipkin_span_t span)
142142
{
143143
return span ? static_cast<zipkin::Span *>(span)->debug() : false;
144144
}
145+
zipkin_span_t zipkin_span_set_debug(zipkin_span_t span, int debug)
146+
{
147+
if (span)
148+
static_cast<zipkin::Span *>(span)->with_debug(debug);
149+
150+
return span;
151+
}
145152
int zipkin_span_sampled(zipkin_span_t span)
146153
{
147154
return span ? static_cast<zipkin::Span *>(span)->sampled() : false;

src/Tracer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Span *CachedTracer::span(const std::string &name, span_id_t parent_id, void *use
3535

3636
void CachedTracer::submit(Span *span)
3737
{
38-
if (m_collector && span->sampled())
38+
if (m_collector && (span->sampled() || span->debug()))
3939
{
4040
VLOG(2) << "Span @ " << span << " submited to collector @ " << m_collector << ", id=" << span->id();
4141

0 commit comments

Comments
 (0)