Skip to content

Commit

Permalink
wrap list and mutex into struct
Browse files Browse the repository at this point in the history
Signed-off-by: artem_danilov <[email protected]>
  • Loading branch information
artem_danilov committed Jan 23, 2025
1 parent ef005c6 commit 029233b
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions client/metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,23 @@ func init() {
initRegisteredConsumers()
}

var mutex sync.Mutex
var consumersInitializers []func()
var consumersInitializers = struct {
sync.Mutex
value []func()
}{}

// RegisterConsumer registers a consumer to be initialized when the metrics are (re)initialized.
func RegisterConsumer(initConsumer func()) {
mutex.Lock()
defer mutex.Unlock()
consumersInitializers = append(consumersInitializers, initConsumer)
consumersInitializers.Lock()
defer consumersInitializers.Unlock()
consumersInitializers.value = append(consumersInitializers.value, initConsumer)
initConsumer()
}

func initRegisteredConsumers() {
mutex.Lock()
defer mutex.Unlock()
for _, initConsumer := range consumersInitializers {
consumersInitializers.Lock()
defer consumersInitializers.Unlock()
for _, initConsumer := range consumersInitializers.value {
initConsumer()
}
}
Expand Down

0 comments on commit 029233b

Please sign in to comment.