From 1b5946346e40a5184e53b637b0e088cce1365ee6 Mon Sep 17 00:00:00 2001 From: MiNG Date: Sun, 28 May 2023 19:41:48 +0800 Subject: [PATCH] feat: support optional otel global initialization for #3284 (#3292) --- core/trace/agent.go | 5 +++++ core/trace/agent_test.go | 9 +++++++++ core/trace/config.go | 5 ++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/trace/agent.go b/core/trace/agent.go index 5bae9f6d..5823a0a6 100644 --- a/core/trace/agent.go +++ b/core/trace/agent.go @@ -33,6 +33,11 @@ var ( // StartAgent starts an opentelemetry agent. func StartAgent(c Config) { + + if c.Disabled { + return + } + lock.Lock() defer lock.Unlock() diff --git a/core/trace/agent_test.go b/core/trace/agent_test.go index cbced387..36edba21 100644 --- a/core/trace/agent_test.go +++ b/core/trace/agent_test.go @@ -16,6 +16,7 @@ func TestStartAgent(t *testing.T) { endpoint3 = "localhost:1235" endpoint4 = "localhost:1236" endpoint5 = "udp://localhost:6831" + endpoint6 = "localhost:1237" ) c1 := Config{ Name: "foo", @@ -57,6 +58,11 @@ func TestStartAgent(t *testing.T) { Endpoint: endpoint5, Batcher: kindJaeger, } + c8 := Config{ + Disabled: true, + Endpoint: endpoint6, + Batcher: kindJaeger, + } StartAgent(c1) StartAgent(c1) @@ -66,6 +72,7 @@ func TestStartAgent(t *testing.T) { StartAgent(c5) StartAgent(c6) StartAgent(c7) + StartAgent(c8) lock.Lock() defer lock.Unlock() @@ -80,4 +87,6 @@ func TestStartAgent(t *testing.T) { assert.False(t, ok) _, ok = agents[endpoint5] assert.True(t, ok) + _, ok = agents[endpoint6] + assert.False(t, ok) } diff --git a/core/trace/config.go b/core/trace/config.go index b59af555..d1b32749 100644 --- a/core/trace/config.go +++ b/core/trace/config.go @@ -16,5 +16,8 @@ type Config struct { // OtlpHttpPath represents the path for OTLP HTTP transport. // For example // /v1/traces - OtlpHttpPath string `json:",optional"` + OtlpHttpPath string `json:",optional"` + + // Disabled indicates whether StartAgent should be called when starting the server. + Disabled bool }