From 0c848e439eaf6d6ae6c7fbe44c33ee244b11b3cb Mon Sep 17 00:00:00 2001 From: Noah Hilverling Date: Fri, 22 Mar 2019 11:23:31 +0100 Subject: [PATCH] Use env in config sync --- configobject/configsync/configsync.go | 4 +++- main.go | 10 ++++++---- supervisor/supervisor.go | 13 +++++++------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/configobject/configsync/configsync.go b/configobject/configsync/configsync.go index 5d1c8e6c..a217afdf 100644 --- a/configobject/configsync/configsync.go +++ b/configobject/configsync/configsync.go @@ -196,7 +196,9 @@ func GetDelta(super *supervisor.Supervisor, ctx *Context) ([]string, []string, [ go func() { defer wg.Done() var err error - mysqlIds, err = super.Dbw.SqlFetchIds(ctx.ObjectType) + super.EnvLock.Lock() + mysqlIds, err = super.Dbw.SqlFetchIds(super.EnvId, ctx.ObjectType) + super.EnvLock.Unlock() if err != nil { super.ChErr <- err return diff --git a/main.go b/main.go index 381ffdbc..24c070bc 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "git.icinga.com/icingadb/icingadb-main/prometheus" "git.icinga.com/icingadb/icingadb-main/supervisor" log "github.com/sirupsen/logrus" + "sync" ) func main() { @@ -37,16 +38,17 @@ func main() { super := supervisor.Supervisor{ ChErr: make(chan error), - ChEnv: make(chan *icingadb_ha.Environment), ChDecode: make(chan *icingadb_json_decoder.JsonDecodePackages), Rdbw: redisConn, Dbw: mysqlConn, + EnvLock: &sync.Mutex{}, } - ha := icingadb_ha.HA{} - go ha.Run(super.Rdbw, super.Dbw, super.ChEnv, super.ChErr) + chEnv := make(chan *icingadb_ha.Environment) + ha := icingadb_ha.NewHA(super) + go ha.Run(super.Rdbw, super.Dbw, chEnv, super.ChErr) go func() { - super.ChErr <- icingadb_ha.IcingaEventsBroker(redisConn, super.ChEnv) + super.ChErr <- icingadb_ha.IcingaEventsBroker(redisConn, chEnv) }() go icingadb_json_decoder.DecodePool(super.ChDecode, super.ChErr, 16) diff --git a/supervisor/supervisor.go b/supervisor/supervisor.go index 06528059..d8915bc3 100644 --- a/supervisor/supervisor.go +++ b/supervisor/supervisor.go @@ -3,13 +3,14 @@ package supervisor import ( "git.icinga.com/icingadb/icingadb-connection" "git.icinga.com/icingadb/icingadb-json-decoder" - "git.icinga.com/icingadb/icingadb-ha" + "sync" ) type Supervisor struct { - ChErr chan error - ChEnv chan *icingadb_ha.Environment - ChDecode chan *icingadb_json_decoder.JsonDecodePackages - Rdbw *icingadb_connection.RDBWrapper - Dbw *icingadb_connection.DBWrapper + ChErr chan error + ChDecode chan *icingadb_json_decoder.JsonDecodePackages + Rdbw *icingadb_connection.RDBWrapper + Dbw *icingadb_connection.DBWrapper + EnvId []byte + EnvLock *sync.Mutex } \ No newline at end of file