Skip to content

Commit d7ab0f8

Browse files
authored
[storage] Remove distinction between primary and archive storage interfaces (#6567)
## Which problem is this PR solving? - Towards #6065 ## Description of the changes - This PR completely removes the interface `storage.ArchiveFactory` by refactoring all the storage implementations to remove the distinction between a primary and archive interface. Note that the concept of archive storage remains the same within Jaeger, we just now use the same interface to handle both primary and archive storages. - 🛑 Breaking change for users of GRPC storage 🛑 - The GRPC storage was changed to only dispatch to the primary storage instead of being able to dispatch to a primary and archive storage. - Mitigation for jaeger-v1 users: In order to restore your archive storage, configure a new GRPC server on a different port and specify it via `--grpc-storage-archive.server`. Archive storage will also need to be enabled via `--grpc-storage-archive.enabled=true` - Mitigation for jaeger-v2 users: In order to restore your archive storage, configured a new GRPC server on a different port and specify it via a new storage backend in `jaeger_storage.backends` (an example of this can be viewed at https://github.com/jaegertracing/jaeger/blob/main/cmd/jaeger/config-remote-storage.yaml) ## How was this change tested? ### gRPC Storage #### On main (establish ground truth) Start the remote storage binary (uses memory storage by default which implements the ArchiveFactory interface) ``` go run ./cmd/remote-storage ``` Start the all in one binary configured with grpc storage (jaeger-v1) ``` SPAN_STORAGE_TYPE=grpc go run ./cmd/all-in-one --grpc-storage.server=http://localhost:17271 ``` Traces can be archived from the UI <img width="1469" alt="Screenshot 2025-01-23 at 10 17 32 PM" src="https://github.com/user-attachments/assets/76a7341b-0344-479b-ad78-380a32412ee4" /> For jaeger-v2, change the extension section of `cmd/jaeger/internal/all-in-one.yaml` to be the following ```yaml jaeger_query: storage: traces: some_storage traces_archive: some_storage jaeger_storage: backends: some_storage: grpc: endpoint: localhost:17271 tls: insecure: true ``` and then start the binary as follows: ``` go run ./cmd/jaeger/ ``` #### For current PR Stop both binaries and checkout this PR ``` gh pr checkout 6567 ``` Start two remote storage binaries (in two separate terminals) ``` go run ./cmd/remote-storage --admin.http.host-port=:17270 --grpc.host-port=:17271 go run ./cmd/remote-storage --admin.http.host-port=:17272 --grpc.host-port=:17273 ``` Start the all-in-one binary with explicit archive configurations ``` SPAN_STORAGE_TYPE=grpc go run ./cmd/all-in-one --grpc-storage.server=http://localhost:17271 --grpc-storage-archive.enabled=true --grpc-storage-archive.server=http://localhost:17273 ``` Traces can be once again archived from the UI <img width="1469" alt="Screenshot 2025-01-23 at 10 25 29 PM" src="https://github.com/user-attachments/assets/1b4ca69f-e94b-4b08-8854-04d3db2650fc" /> For jaeger-v2, the configuration was changed to the following: ```yaml extensions: jaeger_query: storage: traces: some_storage traces_archive: another_storage jaeger_storage: backends: some_storage: grpc: endpoint: localhost:17271 tls: insecure: true another_storage: grpc: endpoint: localhost:17273 tls: insecure: true ``` Try running all-in-one without archive-storage enabled ``` SPAN_STORAGE_TYPE=grpc go run ./cmd/all-in-one --grpc-storage.server=http://localhost:17271 ``` We cannot archive traces <img width="1469" alt="Screenshot 2025-01-23 at 10 26 53 PM" src="https://github.com/user-attachments/assets/0ae7cdb6-25a5-4a74-be63-fb421d77d611" /> ### CLI Flags #### ElasticSearch CLI Flags ``` git checkout main SPAN_STORAGE_TYPE=elasticsearch go run ./cmd/collector help > es_main git checkout v1-es-archive SPAN_STORAGE_TYPE=elasticsearch go run ./cmd/collector help > es_current ``` The diff can be viewed [here](https://www.diffchecker.com/xXuFqnOc/). There is no difference. #### Cassandra CLI Flags ``` git checkout main SPAN_STORAGE_TYPE=cassandra go run ./cmd/collector help > cassandra_main git checkout v1-es-archive SPAN_STORAGE_TYPE=cassandra go run ./cmd/collector help > cassandra_current ``` The diff can be viewed [here](https://www.diffchecker.com/x74PKvhA/). There are a few here differences here in which `cassandra-archive.*` gains some new configuration options that were previously only existed for the primary storage. `cassandra-archive.*` also gains some defaults that will be the same as the the primary storage. ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `npm run lint` and `npm run test` --------- Signed-off-by: Mahad Zaryab <[email protected]> Signed-off-by: Mahad Zaryab <[email protected]>
1 parent aece007 commit d7ab0f8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1126
-1674
lines changed

cmd/all-in-one/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ by default uses only in-memory database.`,
171171
queryTelset := baseTelset // copy
172172
queryTelset.Metrics = queryMetricsFactory
173173
querySrv := startQuery(
174-
svc, qOpts, qOpts.BuildQueryServiceOptions(storageFactory, logger),
175-
qOpts.BuildQueryServiceOptionsV2(storageFactory, logger),
174+
svc, qOpts, qOpts.BuildQueryServiceOptions(storageFactory.InitArchiveStorage, logger),
175+
qOpts.BuildQueryServiceOptionsV2(storageFactory.InitArchiveStorage, logger),
176176
traceReader, dependencyReader, metricsQueryService,
177177
tm, queryTelset,
178178
)

cmd/jaeger/config-remote-storage.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ extensions:
2424
jaeger_query:
2525
storage:
2626
traces: some-storage
27+
traces_archive: another-storage
2728
ui:
2829
config_file: ./cmd/jaeger/config-ui.json
2930

@@ -34,6 +35,11 @@ extensions:
3435
endpoint: localhost:17271
3536
tls:
3637
insecure: true
38+
another-storage:
39+
grpc:
40+
endpoint: localhost:17272
41+
tls:
42+
insecure: true
3743

3844
receivers:
3945
otlp:

cmd/jaeger/internal/extension/jaegerstorage/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (cfg *TraceBackend) Unmarshal(conf *confmap.Conf) error {
7474
}
7575
if conf.IsSet("cassandra") {
7676
cfg.Cassandra = &cassandra.Options{
77-
Primary: cassandra.NamespaceConfig{
77+
NamespaceConfig: cassandra.NamespaceConfig{
7878
Configuration: casCfg.DefaultConfiguration(),
7979
Enabled: true,
8080
},

cmd/jaeger/internal/extension/jaegerstorage/config_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ backends:
8383
`)
8484
cfg := createDefaultConfig().(*Config)
8585
require.NoError(t, conf.Unmarshal(cfg))
86-
assert.NotEmpty(t, cfg.TraceBackends["some_storage"].Cassandra.Primary.Connection.Servers)
86+
assert.NotEmpty(t, cfg.TraceBackends["some_storage"].Cassandra.Configuration.Connection.Servers)
8787
}
8888

8989
func TestConfigDefaultElasticsearch(t *testing.T) {

cmd/jaeger/internal/integration/grpc_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,24 @@ import (
77
"testing"
88

99
"github.com/jaegertracing/jaeger/plugin/storage/integration"
10+
"github.com/jaegertracing/jaeger/ports"
1011
)
1112

1213
type GRPCStorageIntegration struct {
1314
E2EStorageIntegration
1415

15-
remoteStorage *integration.RemoteMemoryStorage
16+
remoteStorage *integration.RemoteMemoryStorage
17+
archiveRemoteStorage *integration.RemoteMemoryStorage
1618
}
1719

1820
func (s *GRPCStorageIntegration) initialize(t *testing.T) {
19-
s.remoteStorage = integration.StartNewRemoteMemoryStorage(t)
21+
s.remoteStorage = integration.StartNewRemoteMemoryStorage(t, ports.RemoteStorageGRPC)
22+
s.archiveRemoteStorage = integration.StartNewRemoteMemoryStorage(t, ports.RemoteStorageGRPC+1)
2023
}
2124

2225
func (s *GRPCStorageIntegration) cleanUp(t *testing.T) {
2326
s.remoteStorage.Close(t)
27+
s.archiveRemoteStorage.Close(t)
2428
s.initialize(t)
2529
}
2630

@@ -37,6 +41,7 @@ func TestGRPCStorage(t *testing.T) {
3741
s.e2eInitialize(t, "grpc")
3842
t.Cleanup(func() {
3943
s.remoteStorage.Close(t)
44+
s.archiveRemoteStorage.Close(t)
4045
})
4146
s.RunSpanStoreTests(t)
4247
}

cmd/query/app/flags.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"github.com/jaegertracing/jaeger/pkg/config/tlscfg"
3131
"github.com/jaegertracing/jaeger/pkg/tenancy"
3232
"github.com/jaegertracing/jaeger/ports"
33-
"github.com/jaegertracing/jaeger/storage"
33+
"github.com/jaegertracing/jaeger/storage/spanstore"
3434
"github.com/jaegertracing/jaeger/storage_v2/v1adapter"
3535
)
3636

@@ -138,10 +138,19 @@ func (qOpts *QueryOptions) InitFromViper(v *viper.Viper, logger *zap.Logger) (*Q
138138
return qOpts, nil
139139
}
140140

141+
type InitArchiveStorageFn func(logger *zap.Logger) (spanstore.Reader, spanstore.Writer)
142+
141143
// BuildQueryServiceOptions creates a QueryServiceOptions struct with appropriate adjusters and archive config
142-
func (qOpts *QueryOptions) BuildQueryServiceOptions(storageFactory storage.BaseFactory, logger *zap.Logger) *querysvc.QueryServiceOptions {
144+
func (qOpts *QueryOptions) BuildQueryServiceOptions(
145+
initArchiveStorageFn InitArchiveStorageFn,
146+
logger *zap.Logger,
147+
) *querysvc.QueryServiceOptions {
143148
opts := &querysvc.QueryServiceOptions{}
144-
if !opts.InitArchiveStorage(storageFactory, logger) {
149+
ar, aw := initArchiveStorageFn(logger)
150+
if ar != nil && aw != nil {
151+
opts.ArchiveSpanReader = ar
152+
opts.ArchiveSpanWriter = aw
153+
} else {
145154
logger.Info("Archive storage not initialized")
146155
}
147156

@@ -150,13 +159,13 @@ func (qOpts *QueryOptions) BuildQueryServiceOptions(storageFactory storage.BaseF
150159
return opts
151160
}
152161

153-
func (qOpts *QueryOptions) BuildQueryServiceOptionsV2(storageFactory storage.BaseFactory, logger *zap.Logger) *v2querysvc.QueryServiceOptions {
162+
func (qOpts *QueryOptions) BuildQueryServiceOptionsV2(initArchiveStorageFn InitArchiveStorageFn, logger *zap.Logger) *v2querysvc.QueryServiceOptions {
154163
opts := &v2querysvc.QueryServiceOptions{}
155164

156-
ar, aw := v1adapter.InitializeArchiveStorage(storageFactory, logger)
165+
ar, aw := initArchiveStorageFn(logger)
157166
if ar != nil && aw != nil {
158-
opts.ArchiveTraceReader = ar
159-
opts.ArchiveTraceWriter = aw
167+
opts.ArchiveTraceReader = v1adapter.NewTraceReader(ar)
168+
opts.ArchiveTraceWriter = v1adapter.NewTraceWriter(aw)
160169
} else {
161170
logger.Info("Archive storage not initialized")
162171
}

cmd/query/app/flags_test.go

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import (
1717
"github.com/jaegertracing/jaeger/pkg/config"
1818
"github.com/jaegertracing/jaeger/pkg/testutils"
1919
"github.com/jaegertracing/jaeger/ports"
20-
"github.com/jaegertracing/jaeger/storage/mocks"
21-
spanstore_mocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks"
20+
"github.com/jaegertracing/jaeger/storage/spanstore"
21+
spanstoremocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks"
2222
)
2323

2424
func TestQueryBuilderFlags(t *testing.T) {
@@ -86,60 +86,51 @@ func TestStringSliceAsHeader(t *testing.T) {
8686
require.NoError(t, err)
8787
}
8888

89+
func initializedFn(*zap.Logger) (spanstore.Reader, spanstore.Writer) {
90+
return &spanstoremocks.Reader{}, &spanstoremocks.Writer{}
91+
}
92+
93+
func uninitializedFn(*zap.Logger) (spanstore.Reader, spanstore.Writer) {
94+
return nil, nil
95+
}
96+
8997
func TestBuildQueryServiceOptions(t *testing.T) {
9098
v, _ := config.Viperize(AddFlags)
9199
qOpts, err := new(QueryOptions).InitFromViper(v, zap.NewNop())
92100
require.NoError(t, err)
93101
assert.NotNil(t, qOpts)
94102

95-
qSvcOpts := qOpts.BuildQueryServiceOptions(&mocks.Factory{}, zap.NewNop())
96-
assert.NotNil(t, qSvcOpts)
97-
assert.NotNil(t, qSvcOpts.Adjuster)
98-
assert.Nil(t, qSvcOpts.ArchiveSpanReader)
99-
assert.Nil(t, qSvcOpts.ArchiveSpanWriter)
100-
101-
comboFactory := struct {
102-
*mocks.Factory
103-
*mocks.ArchiveFactory
104-
}{
105-
&mocks.Factory{},
106-
&mocks.ArchiveFactory{},
107-
}
108-
109-
comboFactory.ArchiveFactory.On("CreateArchiveSpanReader").Return(&spanstore_mocks.Reader{}, nil)
110-
comboFactory.ArchiveFactory.On("CreateArchiveSpanWriter").Return(&spanstore_mocks.Writer{}, nil)
111-
112-
qSvcOpts = qOpts.BuildQueryServiceOptions(comboFactory, zap.NewNop())
103+
qSvcOpts := qOpts.BuildQueryServiceOptions(initializedFn, zap.NewNop())
113104
assert.NotNil(t, qSvcOpts)
114105
assert.NotNil(t, qSvcOpts.Adjuster)
115106
assert.NotNil(t, qSvcOpts.ArchiveSpanReader)
116107
assert.NotNil(t, qSvcOpts.ArchiveSpanWriter)
117108
}
118109

119-
func TestBuildQueryServiceOptionsV2(t *testing.T) {
110+
func TestBuildQueryServiceOptions_NoArchiveStorage(t *testing.T) {
120111
v, _ := config.Viperize(AddFlags)
121112
qOpts, err := new(QueryOptions).InitFromViper(v, zap.NewNop())
122113
require.NoError(t, err)
123114
assert.NotNil(t, qOpts)
124115

125-
qSvcOpts := qOpts.BuildQueryServiceOptionsV2(&mocks.Factory{}, zap.NewNop())
116+
logger, logBuf := testutils.NewLogger()
117+
qSvcOpts := qOpts.BuildQueryServiceOptions(uninitializedFn, logger)
126118
assert.NotNil(t, qSvcOpts)
127119
assert.NotNil(t, qSvcOpts.Adjuster)
128-
assert.Nil(t, qSvcOpts.ArchiveTraceReader)
129-
assert.Nil(t, qSvcOpts.ArchiveTraceWriter)
120+
assert.Nil(t, qSvcOpts.ArchiveSpanReader)
121+
assert.Nil(t, qSvcOpts.ArchiveSpanWriter)
130122

131-
comboFactory := struct {
132-
*mocks.Factory
133-
*mocks.ArchiveFactory
134-
}{
135-
&mocks.Factory{},
136-
&mocks.ArchiveFactory{},
137-
}
123+
require.Contains(t, logBuf.String(), "Archive storage not initialized")
124+
}
125+
126+
func TestBuildQueryServiceOptionsV2(t *testing.T) {
127+
v, _ := config.Viperize(AddFlags)
128+
qOpts, err := new(QueryOptions).InitFromViper(v, zap.NewNop())
129+
require.NoError(t, err)
130+
assert.NotNil(t, qOpts)
138131

139-
comboFactory.ArchiveFactory.On("CreateArchiveSpanReader").Return(&spanstore_mocks.Reader{}, nil)
140-
comboFactory.ArchiveFactory.On("CreateArchiveSpanWriter").Return(&spanstore_mocks.Writer{}, nil)
132+
qSvcOpts := qOpts.BuildQueryServiceOptionsV2(initializedFn, zap.NewNop())
141133

142-
qSvcOpts = qOpts.BuildQueryServiceOptionsV2(comboFactory, zap.NewNop())
143134
assert.NotNil(t, qSvcOpts)
144135
assert.NotNil(t, qSvcOpts.Adjuster)
145136
assert.NotNil(t, qSvcOpts.ArchiveTraceReader)
@@ -153,7 +144,7 @@ func TestBuildQueryServiceOptionsV2_NoArchiveStorage(t *testing.T) {
153144
assert.NotNil(t, qOpts)
154145

155146
logger, logBuf := testutils.NewLogger()
156-
qSvcOpts := qOpts.BuildQueryServiceOptionsV2(&mocks.Factory{}, logger)
147+
qSvcOpts := qOpts.BuildQueryServiceOptionsV2(uninitializedFn, logger)
157148
assert.Nil(t, qSvcOpts.ArchiveTraceReader)
158149
assert.Nil(t, qSvcOpts.ArchiveTraceWriter)
159150

cmd/query/app/querysvc/query_service.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,8 @@ import (
88
"errors"
99
"time"
1010

11-
"go.uber.org/zap"
12-
1311
"github.com/jaegertracing/jaeger-idl/model/v1"
1412
"github.com/jaegertracing/jaeger/model/adjuster"
15-
"github.com/jaegertracing/jaeger/storage"
1613
"github.com/jaegertracing/jaeger/storage/spanstore"
1714
"github.com/jaegertracing/jaeger/storage_v2/depstore"
1815
"github.com/jaegertracing/jaeger/storage_v2/tracestore"
@@ -164,36 +161,6 @@ func (qs QueryService) GetCapabilities() StorageCapabilities {
164161
}
165162
}
166163

167-
// InitArchiveStorage tries to initialize archive storage reader/writer if storage factory supports them.
168-
func (opts *QueryServiceOptions) InitArchiveStorage(storageFactory storage.BaseFactory, logger *zap.Logger) bool {
169-
archiveFactory, ok := storageFactory.(storage.ArchiveFactory)
170-
if !ok {
171-
logger.Info("Archive storage not supported by the factory")
172-
return false
173-
}
174-
reader, err := archiveFactory.CreateArchiveSpanReader()
175-
if errors.Is(err, storage.ErrArchiveStorageNotConfigured) || errors.Is(err, storage.ErrArchiveStorageNotSupported) {
176-
logger.Info("Archive storage not created", zap.String("reason", err.Error()))
177-
return false
178-
}
179-
if err != nil {
180-
logger.Error("Cannot init archive storage reader", zap.Error(err))
181-
return false
182-
}
183-
writer, err := archiveFactory.CreateArchiveSpanWriter()
184-
if errors.Is(err, storage.ErrArchiveStorageNotConfigured) || errors.Is(err, storage.ErrArchiveStorageNotSupported) {
185-
logger.Info("Archive storage not created", zap.String("reason", err.Error()))
186-
return false
187-
}
188-
if err != nil {
189-
logger.Error("Cannot init archive storage writer", zap.Error(err))
190-
return false
191-
}
192-
opts.ArchiveSpanReader = reader
193-
opts.ArchiveSpanWriter = writer
194-
return true
195-
}
196-
197164
// hasArchiveStorage returns true if archive storage reader/writer are initialized.
198165
func (opts *QueryServiceOptions) hasArchiveStorage() bool {
199166
return opts.ArchiveSpanReader != nil && opts.ArchiveSpanWriter != nil

cmd/query/app/querysvc/query_service_test.go

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -451,64 +451,14 @@ func TestGetCapabilitiesWithSupportsArchive(t *testing.T) {
451451

452452
type fakeStorageFactory1 struct{}
453453

454-
type fakeStorageFactory2 struct {
455-
fakeStorageFactory1
456-
r spanstore.Reader
457-
w spanstore.Writer
458-
rErr error
459-
wErr error
460-
}
461-
462454
func (*fakeStorageFactory1) Initialize(metrics.Factory, *zap.Logger) error {
463455
return nil
464456
}
465457
func (*fakeStorageFactory1) CreateSpanReader() (spanstore.Reader, error) { return nil, nil }
466458
func (*fakeStorageFactory1) CreateSpanWriter() (spanstore.Writer, error) { return nil, nil }
467459
func (*fakeStorageFactory1) CreateDependencyReader() (dependencystore.Reader, error) { return nil, nil }
468460

469-
func (f *fakeStorageFactory2) CreateArchiveSpanReader() (spanstore.Reader, error) { return f.r, f.rErr }
470-
func (f *fakeStorageFactory2) CreateArchiveSpanWriter() (spanstore.Writer, error) { return f.w, f.wErr }
471-
472-
var (
473-
_ storage.Factory = new(fakeStorageFactory1)
474-
_ storage.ArchiveFactory = new(fakeStorageFactory2)
475-
)
476-
477-
func TestInitArchiveStorageErrors(t *testing.T) {
478-
opts := &QueryServiceOptions{}
479-
logger := zap.NewNop()
480-
481-
assert.False(t, opts.InitArchiveStorage(new(fakeStorageFactory1), logger))
482-
assert.False(t, opts.InitArchiveStorage(
483-
&fakeStorageFactory2{rErr: storage.ErrArchiveStorageNotConfigured},
484-
logger,
485-
))
486-
assert.False(t, opts.InitArchiveStorage(
487-
&fakeStorageFactory2{rErr: errors.New("error")},
488-
logger,
489-
))
490-
assert.False(t, opts.InitArchiveStorage(
491-
&fakeStorageFactory2{wErr: storage.ErrArchiveStorageNotConfigured},
492-
logger,
493-
))
494-
assert.False(t, opts.InitArchiveStorage(
495-
&fakeStorageFactory2{wErr: errors.New("error")},
496-
logger,
497-
))
498-
}
499-
500-
func TestInitArchiveStorage(t *testing.T) {
501-
opts := &QueryServiceOptions{}
502-
logger := zap.NewNop()
503-
reader := &spanstoremocks.Reader{}
504-
writer := &spanstoremocks.Writer{}
505-
assert.True(t, opts.InitArchiveStorage(
506-
&fakeStorageFactory2{r: reader, w: writer},
507-
logger,
508-
))
509-
assert.Equal(t, reader, opts.ArchiveSpanReader)
510-
assert.Equal(t, writer, opts.ArchiveSpanWriter)
511-
}
461+
var _ storage.Factory = new(fakeStorageFactory1)
512462

513463
func TestMain(m *testing.M) {
514464
testutils.VerifyGoLeaks(m)

cmd/query/app/token_propagation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func runQueryService(t *testing.T, esURL string) *Server {
8181
}))
8282
f.InitFromViper(v, flagsSvc.Logger)
8383
// set AllowTokenFromContext manually because we don't register the respective CLI flag from query svc
84-
f.Options.Primary.Authentication.BearerTokenAuthentication.AllowFromContext = true
84+
f.Options.Config.Authentication.BearerTokenAuthentication.AllowFromContext = true
8585
require.NoError(t, f.Initialize(telset.Metrics, telset.Logger))
8686
defer f.Close()
8787

0 commit comments

Comments
 (0)