From 52a36167975b69690bf66614c46889c2bc434b21 Mon Sep 17 00:00:00 2001 From: Antoon Prins Date: Fri, 4 Sep 2020 17:21:21 +0200 Subject: [PATCH] Init returns error. --- pkg/metrics/metrics.go | 63 +++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index 6460f44bdec..586e4dd41ff 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -37,42 +37,49 @@ import ( ) // Init intializes metrics according to the specified configuration -func Init(conf *config.Config) { +func Init(conf *config.Config) error { log := logger.New().With().Int("pid", os.Getpid()).Logger() driver := registry.GetDriver(conf.MetricsDataDriverType) - if driver != nil { - // configure the driver - driver.Configure(conf) + if driver == nil { + log.Info().Msg("No metrics are being recorded.") + // No error but just don't proceed with metrics + return nil + } - m := &Metrics{ - dataDriver: driver, - NumUsersMeasure: stats.Int64("cs3_org_sciencemesh_site_total_num_users", "The total number of users within this site", stats.UnitDimensionless), - NumGroupsMeasure: stats.Int64("cs3_org_sciencemesh_site_total_num_groups", "The total number of groups within this site", stats.UnitDimensionless), - AmountStorageMeasure: stats.Int64("cs3_org_sciencemesh_site_total_amount_storage", "The total amount of storage used within this site", stats.UnitBytes), - } + // configure the driver + err := driver.Configure(conf) + if err != nil { + return err + } - if err := view.Register( - m.getNumUsersView(), - m.getNumGroupsView(), - m.getAmountStorageView(), - ); err != nil { - log.Error().Msg("error registering the driver's views with opencensus exporter") - } + m := &Metrics{ + dataDriver: driver, + NumUsersMeasure: stats.Int64("cs3_org_sciencemesh_site_total_num_users", "The total number of users within this site", stats.UnitDimensionless), + NumGroupsMeasure: stats.Int64("cs3_org_sciencemesh_site_total_num_groups", "The total number of groups within this site", stats.UnitDimensionless), + AmountStorageMeasure: stats.Int64("cs3_org_sciencemesh_site_total_amount_storage", "The total amount of storage used within this site", stats.UnitBytes), + } - // periodically record metrics data - go func() { - for { - if err := m.recordMetrics(); err != nil { - log.Error().Err(err).Msg("Metrics recording failed.") - } - <-time.After(time.Millisecond * time.Duration(conf.MetricsRecordInterval)) - } - }() - } else { - log.Info().Msg("No metrics are being recorded.") + if err := view.Register( + m.getNumUsersView(), + m.getNumGroupsView(), + m.getAmountStorageView(), + ); err != nil { + return err } + + // periodically record metrics data + go func() { + for { + if err := m.recordMetrics(); err != nil { + log.Error().Err(err).Msg("Metrics recording failed.") + } + <-time.After(time.Millisecond * time.Duration(conf.MetricsRecordInterval)) + } + }() + + return nil } // Metrics the metrics struct