@@ -16,22 +16,13 @@ type provider struct {
1616 hooks []telemetrystore.TelemetryStoreHook
1717}
1818
19- func NewFactory (hookFactories ... factory. ProviderFactory [ telemetrystore.TelemetryStoreHook , telemetrystore. Config ] ) factory.ProviderFactory [telemetrystore.TelemetryStore , telemetrystore.Config ] {
19+ func NewFactory (hookFactories ... telemetrystore.TelemetryStoreHookFactoryFunc ) factory.ProviderFactory [telemetrystore.TelemetryStore , telemetrystore.Config ] {
2020 return factory .NewProviderFactory (factory .MustNewName ("clickhouse" ), func (ctx context.Context , providerSettings factory.ProviderSettings , config telemetrystore.Config ) (telemetrystore.TelemetryStore , error ) {
21- // we want to fail fast so we have hook registration errors before creating the telemetry store
22- hooks := make ([]telemetrystore.TelemetryStoreHook , len (hookFactories ))
23- for i , hookFactory := range hookFactories {
24- hook , err := hookFactory .New (ctx , providerSettings , config )
25- if err != nil {
26- return nil , err
27- }
28- hooks [i ] = hook
29- }
30- return New (ctx , providerSettings , config , hooks ... )
21+ return New (ctx , providerSettings , config , hookFactories ... )
3122 })
3223}
3324
34- func New (ctx context.Context , providerSettings factory.ProviderSettings , config telemetrystore.Config , hooks ... telemetrystore.TelemetryStoreHook ) (telemetrystore.TelemetryStore , error ) {
25+ func New (ctx context.Context , providerSettings factory.ProviderSettings , config telemetrystore.Config , hookFactories ... telemetrystore.TelemetryStoreHookFactoryFunc ) (telemetrystore.TelemetryStore , error ) {
3526 settings := factory .NewScopedProviderSettings (providerSettings , "github.com/SigNoz/signoz/pkg/telemetrystore/clickhousetelemetrystore" )
3627
3728 options , err := clickhouse .ParseDSN (config .Clickhouse .DSN )
@@ -47,6 +38,20 @@ func New(ctx context.Context, providerSettings factory.ProviderSettings, config
4738 return nil , err
4839 }
4940
41+ var version string
42+ if err := chConn .QueryRow (ctx , "SELECT version()" ).Scan (& version ); err != nil {
43+ return nil , err
44+ }
45+
46+ hooks := make ([]telemetrystore.TelemetryStoreHook , len (hookFactories ))
47+ for i , hookFactory := range hookFactories {
48+ hook , err := hookFactory (version ).New (ctx , providerSettings , config )
49+ if err != nil {
50+ return nil , err
51+ }
52+ hooks [i ] = hook
53+ }
54+
5055 return & provider {
5156 settings : settings ,
5257 clickHouseConn : chConn ,
0 commit comments