Skip to content

Commit

Permalink
[refactor][storage] Remove metrics factory distinctions from storage …
Browse files Browse the repository at this point in the history
…factories (#6526)

## Which problem is this PR solving?
- Towards #6065

## Description of the changes
- Some of the storage factories were currently adding the `role` tag to
the metrics factory that it was getting to differentiate between
`primary` and `archive`. Given that goal in v2 is not have that
distinction, the adding of the `primary` tag was moved to the v1
meta-factory. This tag can then be overriden by the archive specific
methods in the storage factories (mainly `CreateArchiveSpanReader` and
`CreateArchiveSpanWriter`) with `role=archive`.

## How was this change tested?
- CI

## 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 <mahadzaryab1@gmail.com>
  • Loading branch information
mahadzaryab1 authored Jan 11, 2025
1 parent 980dc31 commit ef4b968
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 66 deletions.
50 changes: 24 additions & 26 deletions plugin/storage/cassandra/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,9 @@ var ( // interface comformance checks
type Factory struct {
Options *Options

metricsFactory metrics.Factory
primaryMetricsFactory metrics.Factory
archiveMetricsFactory metrics.Factory
logger *zap.Logger
tracer trace.TracerProvider
metricsFactory metrics.Factory
logger *zap.Logger
tracer trace.TracerProvider

primaryConfig config.Configuration
archiveConfig *config.Configuration
Expand Down Expand Up @@ -141,20 +139,6 @@ func (f *Factory) configureFromOptions(o *Options) {
// Initialize implements storage.Factory
func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger) error {
f.metricsFactory = metricsFactory
f.primaryMetricsFactory = metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "primary",
},
},
)
f.archiveMetricsFactory = metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
f.logger = logger

primarySession, err := f.sessionBuilderFn(&f.primaryConfig)
Expand Down Expand Up @@ -219,11 +203,11 @@ func NewSession(c *config.Configuration) (cassandra.Session, error) {

// CreateSpanReader implements storage.Factory
func (f *Factory) CreateSpanReader() (spanstore.Reader, error) {
sr, err := cSpanStore.NewSpanReader(f.primarySession, f.primaryMetricsFactory, f.logger, f.tracer.Tracer("cSpanStore.SpanReader"))
sr, err := cSpanStore.NewSpanReader(f.primarySession, f.metricsFactory, f.logger, f.tracer.Tracer("cSpanStore.SpanReader"))
if err != nil {
return nil, err
}
return spanstoremetrics.NewReaderDecorator(sr, f.primaryMetricsFactory), nil
return spanstoremetrics.NewReaderDecorator(sr, f.metricsFactory), nil
}

// CreateSpanWriter implements storage.Factory
Expand All @@ -232,25 +216,32 @@ func (f *Factory) CreateSpanWriter() (spanstore.Writer, error) {
if err != nil {
return nil, err
}
return cSpanStore.NewSpanWriter(f.primarySession, f.Options.SpanStoreWriteCacheTTL, f.primaryMetricsFactory, f.logger, options...)
return cSpanStore.NewSpanWriter(f.primarySession, f.Options.SpanStoreWriteCacheTTL, f.metricsFactory, f.logger, options...)
}

// CreateDependencyReader implements storage.Factory
func (f *Factory) CreateDependencyReader() (dependencystore.Reader, error) {
version := cDepStore.GetDependencyVersion(f.primarySession)
return cDepStore.NewDependencyStore(f.primarySession, f.primaryMetricsFactory, f.logger, version)
return cDepStore.NewDependencyStore(f.primarySession, f.metricsFactory, f.logger, version)
}

// CreateArchiveSpanReader implements storage.ArchiveFactory
func (f *Factory) CreateArchiveSpanReader() (spanstore.Reader, error) {
if f.archiveSession == nil {
return nil, storage.ErrArchiveStorageNotConfigured
}
sr, err := cSpanStore.NewSpanReader(f.archiveSession, f.archiveMetricsFactory, f.logger, f.tracer.Tracer("cSpanStore.SpanReader"))
archiveMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
sr, err := cSpanStore.NewSpanReader(f.archiveSession, archiveMetricsFactory, f.logger, f.tracer.Tracer("cSpanStore.SpanReader"))
if err != nil {
return nil, err
}
return spanstoremetrics.NewReaderDecorator(sr, f.archiveMetricsFactory), nil
return spanstoremetrics.NewReaderDecorator(sr, archiveMetricsFactory), nil
}

// CreateArchiveSpanWriter implements storage.ArchiveFactory
Expand All @@ -262,7 +253,14 @@ func (f *Factory) CreateArchiveSpanWriter() (spanstore.Writer, error) {
if err != nil {
return nil, err
}
return cSpanStore.NewSpanWriter(f.archiveSession, f.Options.SpanStoreWriteCacheTTL, f.archiveMetricsFactory, f.logger, options...)
archiveMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
return cSpanStore.NewSpanWriter(f.archiveSession, f.Options.SpanStoreWriteCacheTTL, archiveMetricsFactory, f.logger, options...)
}

// CreateLock implements storage.SamplingStoreFactory
Expand Down
55 changes: 31 additions & 24 deletions plugin/storage/es/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,9 @@ var ( // interface comformance checks
type Factory struct {
Options *Options

primaryMetricsFactory metrics.Factory
archiveMetricsFactory metrics.Factory
logger *zap.Logger
tracer trace.TracerProvider
metricsFactory metrics.Factory
logger *zap.Logger
tracer trace.TracerProvider

newClientFn func(c *config.Configuration, logger *zap.Logger, metricsFactory metrics.Factory) (es.Client, error)

Expand Down Expand Up @@ -131,20 +130,7 @@ func (f *Factory) configureFromOptions(o *Options) {

// Initialize implements storage.Factory.
func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger) error {
f.primaryMetricsFactory = metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "primary",
},
},
)
f.archiveMetricsFactory = metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
f.metricsFactory = metricsFactory
f.logger = logger

primaryClient, err := f.newClientFn(f.primaryConfig, logger, metricsFactory)
Expand Down Expand Up @@ -200,12 +186,12 @@ func (f *Factory) CreateSpanReader() (spanstore.Reader, error) {
if err != nil {
return nil, err
}
return spanstoremetrics.NewReaderDecorator(sr, f.primaryMetricsFactory), nil
return spanstoremetrics.NewReaderDecorator(sr, f.metricsFactory), nil
}

// CreateSpanWriter implements storage.Factory
func (f *Factory) CreateSpanWriter() (spanstore.Writer, error) {
return createSpanWriter(f.getPrimaryClient, f.primaryConfig, false, f.primaryMetricsFactory, f.logger)
return createSpanWriter(f.getPrimaryClient, f.primaryConfig, false, f.metricsFactory, f.logger)
}

// CreateDependencyReader implements storage.Factory
Expand All @@ -222,15 +208,29 @@ func (f *Factory) CreateArchiveSpanReader() (spanstore.Reader, error) {
if err != nil {
return nil, err
}
return spanstoremetrics.NewReaderDecorator(sr, f.archiveMetricsFactory), nil
archiveMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
return spanstoremetrics.NewReaderDecorator(sr, archiveMetricsFactory), nil
}

// CreateArchiveSpanWriter implements storage.ArchiveFactory
func (f *Factory) CreateArchiveSpanWriter() (spanstore.Writer, error) {
if !f.archiveConfig.Enabled {
return nil, nil
}
return createSpanWriter(f.getArchiveClient, f.archiveConfig, true, f.archiveMetricsFactory, f.logger)
archiveMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
return createSpanWriter(f.getArchiveClient, f.archiveConfig, true, archiveMetricsFactory, f.logger)
}

func createSpanReader(
Expand Down Expand Up @@ -374,11 +374,18 @@ func (f *Factory) Close() error {
}

func (f *Factory) onPrimaryPasswordChange() {
f.onClientPasswordChange(f.primaryConfig, &f.primaryClient, f.primaryMetricsFactory)
f.onClientPasswordChange(f.primaryConfig, &f.primaryClient, f.metricsFactory)
}

func (f *Factory) onArchivePasswordChange() {
f.onClientPasswordChange(f.archiveConfig, &f.archiveClient, f.archiveMetricsFactory)
archiveMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "archive",
},
},
)
f.onClientPasswordChange(f.archiveConfig, &f.archiveClient, archiveMetricsFactory)
}

func (f *Factory) onClientPasswordChange(cfg *config.Configuration, client *atomic.Pointer[es.Client], mf metrics.Factory) {
Expand Down
1 change: 1 addition & 0 deletions plugin/storage/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger)
Name: "storage",
Tags: map[string]string{
"kind": kind,
"role": "primary", // can be overiden in the storage factory for archive/sampling stores
},
})
if err := factory.Initialize(mf, logger); err != nil {
Expand Down
9 changes: 1 addition & 8 deletions plugin/storage/grpc/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,14 +167,7 @@ func (f *Factory) newRemoteStorage(

// CreateSpanReader implements storage.Factory
func (f *Factory) CreateSpanReader() (spanstore.Reader, error) {
primaryMetricsFactory := f.telset.Metrics.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "primary",
},
},
)
return spanstoremetrics.NewReaderDecorator(f.services.Store.SpanReader(), primaryMetricsFactory), nil
return spanstoremetrics.NewReaderDecorator(f.services.Store.SpanReader(), f.telset.Metrics), nil
}

// CreateSpanWriter implements storage.Factory
Expand Down
9 changes: 1 addition & 8 deletions plugin/storage/memory/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,7 @@ func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger)

// CreateSpanReader implements storage.Factory
func (f *Factory) CreateSpanReader() (spanstore.Reader, error) {
primaryMetricsFactory := f.metricsFactory.Namespace(
metrics.NSOptions{
Tags: map[string]string{
"role": "primary",
},
},
)
return spanstoremetrics.NewReaderDecorator(f.store, primaryMetricsFactory), nil
return spanstoremetrics.NewReaderDecorator(f.store, f.metricsFactory), nil
}

// CreateSpanWriter implements storage.Factory
Expand Down

0 comments on commit ef4b968

Please sign in to comment.