Skip to content

Commit 18ce7dd

Browse files
authored
feat: Add sampled trace support (#17850)
Signed-off-by: Xuanwo <[email protected]>
1 parent 2432c12 commit 18ce7dd

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed

src/query/service/src/servers/mysql/mysql_interactive_worker.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ use opensrv_mysql::InitWriter;
4545
use opensrv_mysql::ParamParser;
4646
use opensrv_mysql::QueryResultWriter;
4747
use opensrv_mysql::StatementMetaWriter;
48+
use rand::thread_rng;
49+
use rand::Rng as _;
4850
use rand::RngCore;
4951
use uuid::Uuid;
5052

@@ -192,7 +194,9 @@ impl<W: AsyncWrite + Send + Sync + Unpin> AsyncMysqlShim<W> for InteractiveWorke
192194
writer: QueryResultWriter<'a, W>,
193195
) -> Result<()> {
194196
let query_id = Uuid::new_v4().to_string();
195-
let root = Span::root(func_path!(), SpanContext::random())
197+
let sampled =
198+
thread_rng().gen_range(0..100) <= self.base.session.get_trace_sample_rate()?;
199+
let root = Span::root(func_path!(), SpanContext::random().sampled(sampled))
196200
.with_properties(|| self.base.session.to_fastrace_properties());
197201

198202
let mut tracking_payload = ThreadTracker::new_tracking_payload();

src/query/service/src/sessions/session.rs

+4
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,10 @@ impl Session {
388388
self.session_ctx.set_temp_tbl_mgr(temp_tbl_mgr)
389389
}
390390

391+
pub fn get_trace_sample_rate(&self) -> Result<u64> {
392+
self.session_ctx.get_settings().get_trace_sample_rate()
393+
}
394+
391395
pub fn set_query_priority(&self, priority: u8) {
392396
if let Some(context_shared) = self.session_ctx.get_query_context_shared() {
393397
context_shared.set_priority(priority);

src/query/settings/src/settings_default.rs

+7
Original file line numberDiff line numberDiff line change
@@ -1271,6 +1271,13 @@ impl DefaultSettings {
12711271
scope: SettingScope::Both,
12721272
range: Some(SettingRange::Numeric(0..=1)),
12731273
}),
1274+
("trace_sample_rate", DefaultSettingValue {
1275+
value: UserSettingValue::UInt64(1),
1276+
desc: "Setting the trace sample rate. The value should be between '0' and '100'",
1277+
mode: SettingMode::Both,
1278+
scope: SettingScope::Both,
1279+
range: Some(SettingRange::Numeric(0..=100)),
1280+
}),
12741281
]);
12751282

12761283
Ok(Arc::new(DefaultSettings {

src/query/settings/src/settings_getter_setter.rs

+4
Original file line numberDiff line numberDiff line change
@@ -936,4 +936,8 @@ impl Settings {
936936
pub fn get_statement_queue_ttl_in_seconds(&self) -> Result<u64> {
937937
self.try_get_u64("statement_queue_ttl_in_seconds")
938938
}
939+
940+
pub fn get_trace_sample_rate(&self) -> Result<u64> {
941+
self.try_get_u64("trace_sample_rate")
942+
}
939943
}

0 commit comments

Comments
 (0)