Skip to content

Commit 6658b48

Browse files
committed
fix: add timeout to jaeger report
1 parent a9df972 commit 6658b48

4 files changed

Lines changed: 21 additions & 27 deletions

File tree

internal/config/dotenv.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,9 @@ import (
1919

2020
"github.com/joho/godotenv"
2121
"github.com/slackapi/slack-cli/internal/pkg/version"
22-
"github.com/slackapi/slack-cli/internal/shared/types"
2322
"github.com/spf13/afero"
2423
)
2524

26-
// IsTelemetryDisabled checks environment variables to determine if telemetry
27-
// should be disabled. This can be called before Config is initialized.
28-
func IsTelemetryDisabled(os types.Os) bool {
29-
var disableTelemetry = strings.TrimSpace(os.Getenv(slackDisableTelemetryEnv))
30-
var testVersion = strings.TrimSpace(os.Getenv(version.EnvTestVersion))
31-
return (disableTelemetry != "" && disableTelemetry != "false" && disableTelemetry != "0") || testVersion != ""
32-
}
33-
3425
// GetDotEnvFileVariables collects only the variables in the .env file
3526
func (c *Config) GetDotEnvFileVariables() (map[string]string, error) {
3627
variables := map[string]string{}
@@ -69,7 +60,9 @@ func (c *Config) LoadEnvironmentVariables() error {
6960
}
7061

7162
// Disable telemetry if either disable-telemetry or test-version environment variables
72-
if IsTelemetryDisabled(c.os) {
63+
var disableTelemetry = strings.TrimSpace(c.os.Getenv(slackDisableTelemetryEnv))
64+
var testVersion = strings.TrimSpace(c.os.Getenv(version.EnvTestVersion))
65+
if (disableTelemetry != "" && disableTelemetry != "false" && disableTelemetry != "0") || testVersion != "" {
7366
c.DisableTelemetryFlag = true
7467
}
7568

internal/slackcontext/slackcontext_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func Test_SlackContext_SetOpenTracingTraceID(t *testing.T) {
112112
}
113113

114114
func Test_SlackContext_OpenTracingTracer(t *testing.T) {
115-
_, _tracer := tracer.SetupTracer(true, false)
115+
_, _tracer := tracer.SetupTracer(true)
116116

117117
tests := map[string]struct {
118118
expectedTracer opentracing.Tracer
@@ -139,7 +139,7 @@ func Test_SlackContext_OpenTracingTracer(t *testing.T) {
139139
}
140140

141141
func Test_SlackContext_SetOpenTracingTracer(t *testing.T) {
142-
_, _tracer := tracer.SetupTracer(true, false)
142+
_, _tracer := tracer.SetupTracer(true)
143143

144144
tests := map[string]struct {
145145
expectedTracer opentracing.Tracer

internal/tracer/tracer.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,38 @@ import (
2020
"time"
2121

2222
"github.com/opentracing/opentracing-go"
23+
jaeger "github.com/uber/jaeger-client-go"
2324
jaegercfg "github.com/uber/jaeger-client-go/config"
25+
"github.com/uber/jaeger-client-go/transport"
2426
)
2527

2628
// SetupTracer sets up the tracer to send data to honeycomb
27-
func SetupTracer(isDev bool, disableTelemetry bool) (io.Closer, opentracing.Tracer) {
28-
var collectorEndpoint = "https://slackb.com/traces/v1/jaeger"
29+
func SetupTracer(isDev bool) (io.Closer, opentracing.Tracer) {
30+
collectorEndpoint := "https://slackb.com/traces/v1/jaeger"
2931
if isDev {
3032
collectorEndpoint = "https://dev.slackb.com/traces/v1/jaeger"
3133
}
3234
// Recommended configuration for production.
33-
var jCfg = jaegercfg.Configuration{
35+
jCfg := jaegercfg.Configuration{
3436
ServiceName: "slack-cli", // Don't change this. Required to distinguish logs & traces coming from the CLI
3537
Disabled: false, // Keep tracer active so span contexts and trace IDs are still generated
36-
Reporter: &jaegercfg.ReporterConfig{
37-
LogSpans: false,
38-
CollectorEndpoint: collectorEndpoint,
39-
BufferFlushInterval: 100 * time.Millisecond,
40-
// Having a larger value here results in longer execution of every single CLI command
41-
// We may need to adjust the size here if we observe lost data in metrics.
42-
QueueSize: 1,
43-
},
4438
Sampler: &jaegercfg.SamplerConfig{
4539
Type: "const",
4640
Param: 1,
4741
},
4842
}
4943

44+
// Create HTTP transport with a short timeout to prevent hangs on unreachable hosts
45+
sender := transport.NewHTTPTransport(collectorEndpoint, transport.HTTPTimeout(1*time.Second))
46+
reporter := jaeger.NewRemoteReporter(sender,
47+
jaeger.ReporterOptions.BufferFlushInterval(100*time.Millisecond),
48+
// Having a larger value here results in longer execution of every single CLI command
49+
// We may need to adjust the size here if we observe lost data in metrics.
50+
jaeger.ReporterOptions.QueueSize(1),
51+
)
52+
5053
// Initialize tracer with a logger and a metrics factory
51-
var tracer, jaegerCloser, traceErr = jCfg.NewTracer()
54+
tracer, jaegerCloser, traceErr := jCfg.NewTracer(jaegercfg.Reporter(reporter))
5255
if traceErr != nil {
5356
log.Fatalf("Could not initialize jaeger tracer: %s", traceErr.Error())
5457
}

main.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ import (
2424
"github.com/google/uuid"
2525
"github.com/opentracing/opentracing-go"
2626
"github.com/slackapi/slack-cli/cmd"
27-
"github.com/slackapi/slack-cli/internal/config"
2827
"github.com/slackapi/slack-cli/internal/goutils"
2928
"github.com/slackapi/slack-cli/internal/iostreams"
3029
"github.com/slackapi/slack-cli/internal/ioutils"
3130
"github.com/slackapi/slack-cli/internal/pkg/version"
3231
"github.com/slackapi/slack-cli/internal/shared"
3332
"github.com/slackapi/slack-cli/internal/slackcontext"
34-
"github.com/slackapi/slack-cli/internal/slackdeps"
3533
"github.com/slackapi/slack-cli/internal/tracer"
3634
"github.com/uber/jaeger-client-go"
3735
)
@@ -46,7 +44,7 @@ func main() {
4644
// - This would allow us to choose the correct API host based on flags
4745
// - Uncomment `isDevTarget` if we refactor to cmd/root.go and update to call `ResolveAPIHost`
4846
// var isDevTarget = shared.NewClientFactory().AuthClient().UserDefaultAuthIsProd(ctx) // TODO - hack, remove shared.clients
49-
var jaegerCloser, tracer = tracer.SetupTracer(false, config.IsTelemetryDisabled(slackdeps.NewOs()))
47+
var jaegerCloser, tracer = tracer.SetupTracer(false)
5048
defer func() {
5149
done := make(chan struct{})
5250
go func() {

0 commit comments

Comments
 (0)