diff --git a/pkg/base/test_server_args.go b/pkg/base/test_server_args.go index 79d44b5e75ac..f26764f5fcf7 100644 --- a/pkg/base/test_server_args.go +++ b/pkg/base/test_server_args.go @@ -242,7 +242,6 @@ type TestTenantArgs struct { // Settings allows the caller to control the settings object used for the // tenant cluster. Settings *cluster.Settings - Tracer *tracing.Tracer // AllowSettingClusterSettings, if true, allows the tenant to set in-memory // cluster settings. diff --git a/pkg/server/testserver.go b/pkg/server/testserver.go index 03ea76d8c832..5209281f9b04 100644 --- a/pkg/server/testserver.go +++ b/pkg/server/testserver.go @@ -582,11 +582,21 @@ func (ts *TestServer) StartTenant( if params.TempStorageConfig != nil { sqlCfg.TempStorageConfig = *params.TempStorageConfig } - tr := params.Tracer - if params.Tracer == nil { - tr = tracing.NewTracerWithOpt(ctx, tracing.WithClusterSettings(&st.SV)) - } - baseCfg := makeTestBaseConfig(st, tr) + + stopper := params.Stopper + if stopper == nil { + // We don't share the stopper with the server because we want their Tracers + // to be different, to simulate them being different processes. + tr := tracing.NewTracerWithOpt(ctx, tracing.WithClusterSettings(&st.SV)) + stopper = stop.NewStopper(stop.WithTracer(tr)) + // The server's stopper stops the tenant, for convenience. + ts.Stopper().AddCloser(stop.CloserFn(func() { stopper.Stop(context.Background()) })) + } else if stopper.Tracer() == nil { + tr := tracing.NewTracerWithOpt(ctx, tracing.WithClusterSettings(&st.SV)) + stopper.SetTracer(tr) + } + + baseCfg := makeTestBaseConfig(st, stopper.Tracer()) baseCfg.TestingKnobs = params.TestingKnobs baseCfg.Insecure = params.ForceInsecure baseCfg.Locality = params.Locality @@ -603,10 +613,6 @@ func (ts *TestServer) StartTenant( tenantKnobs.ClusterSettingsUpdater = st.MakeUpdater() } } - stopper := params.Stopper - if stopper == nil { - stopper = ts.Stopper() - } sqlServer, addr, httpAddr, err := StartTenant( ctx, stopper, diff --git a/pkg/util/stop/stopper.go b/pkg/util/stop/stopper.go index 9f05e56cb1f9..ad79d68ea00e 100644 --- a/pkg/util/stop/stopper.go +++ b/pkg/util/stop/stopper.go @@ -620,3 +620,8 @@ func (s *Stopper) Quiesce(ctx context.Context) { func (s *Stopper) SetTracer(tr *tracing.Tracer) { s.tracer = tr } + +// Tracer returns the Tracer that the Stopper will use for tasks. +func (s *Stopper) Tracer() *tracing.Tracer { + return s.tracer +}