Skip to content

Commit

Permalink
feat: reuse jaeger connection
Browse files Browse the repository at this point in the history
  • Loading branch information
mathnogueira committed May 2, 2024
1 parent 09fb312 commit e3d1f65
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions agent/tracedb/jaegerdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"io"
"strings"
"sync"

pb "github.com/kubeshop/tracetest/agent/internal/proto-gen-go/api_v3"
"github.com/kubeshop/tracetest/agent/tracedb/connection"
Expand All @@ -22,12 +23,36 @@ func jaegerDefaultPorts() []string {
return []string{"16685"}
}

var (
connectionPool map[string]TraceDB = make(map[string]TraceDB)
connectionPoolMutex sync.Mutex
)

func getConnectionFromCache(grpcConfig *datastore.GRPCClientSettings) (TraceDB, bool) {
connectionPoolMutex.Lock()
defer connectionPoolMutex.Unlock()

connection, ok := connectionPool[grpcConfig.Endpoint]
return connection, ok
}

func saveConnectionToCache(grpcConfig *datastore.GRPCClientSettings, traceDB TraceDB) {
connectionPoolMutex.Lock()
defer connectionPoolMutex.Unlock()

connectionPool[grpcConfig.Endpoint] = traceDB
}

type jaegerTraceDB struct {
realTraceDB
dataSource datasource.DataSource
}

func newJaegerDB(grpcConfig *datastore.GRPCClientSettings) (TraceDB, error) {
if connection, ok := getConnectionFromCache(grpcConfig); ok {
return connection, nil
}

baseConfig := &datastore.MultiChannelClientConfig{
Type: datastore.MultiChannelClientTypeGRPC,
Grpc: grpcConfig,
Expand All @@ -37,9 +62,13 @@ func newJaegerDB(grpcConfig *datastore.GRPCClientSettings) (TraceDB, error) {
GRPC: jaegerGrpcGetTraceByID,
})

return &jaegerTraceDB{
traceDB := &jaegerTraceDB{
dataSource: dataSource,
}, nil
}

saveConnectionToCache(grpcConfig, traceDB)

return traceDB, nil
}

func (jtd *jaegerTraceDB) Connect(ctx context.Context) error {
Expand Down

0 comments on commit e3d1f65

Please sign in to comment.