mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-06 05:47:13 +02:00
33 lines
1.5 KiB
Diff
33 lines
1.5 KiB
Diff
diff --git a/sdk/src/trace/samplers/trace_id_ratio.cc b/sdk/src/trace/samplers/trace_id_ratio.cc
|
|
index fcb074ff..0a12c3b0 100644
|
|
--- a/sdk/src/trace/samplers/trace_id_ratio.cc
|
|
+++ b/sdk/src/trace/samplers/trace_id_ratio.cc
|
|
@@ -56,8 +56,13 @@ uint64_t CalculateThresholdFromBuffer(const trace_api::TraceId &trace_id) noexce
|
|
// We only use the first 8 bytes of TraceId.
|
|
static_assert(trace_api::TraceId::kSize >= 8, "TraceID must be at least 8 bytes long.");
|
|
|
|
+ // Always interpret as big-endian
|
|
+ const uint8_t *data = trace_id.Id().data();
|
|
uint64_t res = 0;
|
|
- std::memcpy(&res, &trace_id, 8);
|
|
+ for (int i = 0; i < 8; ++i)
|
|
+ {
|
|
+ res = (res << 8) | data[i];
|
|
+ }
|
|
|
|
double ratio = static_cast<double>(res) / static_cast<double>(UINT64_MAX);
|
|
|
|
diff --git a/sdk/test/trace/trace_id_ratio_sampler_test.cc b/sdk/test/trace/trace_id_ratio_sampler_test.cc
|
|
index 86aaeb40..fd509281 100644
|
|
--- a/sdk/test/trace/trace_id_ratio_sampler_test.cc
|
|
+++ b/sdk/test/trace/trace_id_ratio_sampler_test.cc
|
|
@@ -99,7 +99,7 @@ TEST(TraceIdRatioBasedSampler, ShouldSampleWithoutContext)
|
|
ASSERT_EQ(Decision::RECORD_AND_SAMPLE, sampling_result.decision);
|
|
ASSERT_EQ(nullptr, sampling_result.attributes);
|
|
|
|
- constexpr uint8_t buf[] = {0, 0, 0, 0, 0, 0, 0, 0x80, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
+ constexpr uint8_t buf[] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
trace_api::TraceId valid_trace_id(buf);
|
|
|
|
sampling_result = s1.ShouldSample(trace_api::SpanContext::GetInvalid(), valid_trace_id, "",
|