a bit more safety by copying the state when passing it to
the websessions and prometheus.
This commit is contained in:
parent
95fe8bb010
commit
5ff22f4b13
@ -15,6 +15,6 @@ func NewStateNotifier() *StateNotifier {
|
||||
}
|
||||
|
||||
func (notifier StateNotifier) Publish(state *models.State) {
|
||||
notifier.webNotificationChannel <- state
|
||||
notifier.prometheusNotificationChannel <- state
|
||||
notifier.webNotificationChannel <- state.Copy()
|
||||
notifier.prometheusNotificationChannel <- state.Copy()
|
||||
}
|
||||
|
@ -1,6 +1,18 @@
|
||||
package models
|
||||
|
||||
// State is a description of the current state of converge.
|
||||
// Created by the server and used for updating the web client
|
||||
// and prometheus metrics.
|
||||
type State struct {
|
||||
Agents []Agent
|
||||
Clients []Client
|
||||
}
|
||||
|
||||
func (state *State) Copy() *State {
|
||||
c := State{}
|
||||
c.Agents = make([]Agent, len(state.Agents))
|
||||
c.Clients = make([]Client, len(state.Clients))
|
||||
copy(c.Agents, state.Agents)
|
||||
copy(c.Clients, state.Clients)
|
||||
return &c
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user