aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorGibheer <gibheer+git@zero-knowledge.org>2019-08-12 14:49:53 +0200
committerGibheer <gibheer+git@zero-knowledge.org>2019-08-12 14:49:53 +0200
commite2b479c34fcee4c41009fc9e8fe869831fbd494f (patch)
tree465ba149ff5e25e853e4dd5d758298a7fd97d59a /cmd
parent88b50033d0e9808a4657ff56835c6dacc77cd433 (diff)
support new checker api
With this, it is now possible to support multiple check instances and balance the load.
Diffstat (limited to 'cmd')
-rw-r--r--cmd/moncheck/main.go23
-rw-r--r--cmd/monwork/main.go6
2 files changed, 13 insertions, 16 deletions
diff --git a/cmd/moncheck/main.go b/cmd/moncheck/main.go
index 6aa34a5..3bac52e 100644
--- a/cmd/moncheck/main.go
+++ b/cmd/moncheck/main.go
@@ -27,11 +27,12 @@ var (
type (
Config struct {
- DB string `json:"db"`
- Timeout string `json:"timeout"`
- Wait string `json:"wait"`
- Path []string `json:"path"`
- Workers int `json:"workers"`
+ DB string `json:"db"`
+ Timeout string `json:"timeout"`
+ Wait string `json:"wait"`
+ Path []string `json:"path"`
+ Workers int `json:"workers"`
+ CheckerID int `json:"checker_id"`
}
States []int
@@ -73,14 +74,14 @@ func main() {
}
for i := 0; i < config.Workers; i++ {
- go check(i, db, waitDuration, timeout, hostname)
+ go check(i, db, waitDuration, timeout, hostname, config.CheckerID)
}
wg := sync.WaitGroup{}
wg.Add(1)
wg.Wait()
}
-func check(thread int, db *sql.DB, waitDuration, timeout time.Duration, hostname string) {
+func check(thread int, db *sql.DB, waitDuration, timeout time.Duration, hostname string, checker_id int) {
for {
tx, err := db.Begin()
if err != nil {
@@ -91,14 +92,10 @@ func check(thread int, db *sql.DB, waitDuration, timeout time.Duration, hostname
from active_checks
where next_time < now()
and enabled
+ and checker_id = $1
order by next_time
for update skip locked
- limit 1;`)
- if err != nil {
- log.Printf("[%d] could not start query: %s", thread, err)
- tx.Rollback()
- continue
- }
+ limit 1;`, checker_id)
var (
id int64
cmdLine []string
diff --git a/cmd/monwork/main.go b/cmd/monwork/main.go
index 81bc347..4271213 100644
--- a/cmd/monwork/main.go
+++ b/cmd/monwork/main.go
@@ -226,13 +226,13 @@ var (
where c.last_refresh < c.updated or c.last_refresh is null
limit 1
for update of c skip locked;`
- SQLRefreshActiveCheck = `insert into active_checks(check_id, cmdline, intval, enabled, msg, mapping_id)
-select c.id, $2, c.intval, c.enabled, case when ac.msg is null then '' else ac.msg end, case when c.mapping_id is not null then c.mapping_id when n.mapping_id is not null then n.mapping_id else 1 end
+ SQLRefreshActiveCheck = `insert into active_checks(check_id, cmdline, intval, enabled, msg, mapping_id, checker_id)
+select c.id, $2, c.intval, c.enabled, case when ac.msg is null then '' else ac.msg end, case when c.mapping_id is not null then c.mapping_id when n.mapping_id is not null then n.mapping_id else 1 end, c.checker_id
from checks c
left join active_checks ac on c.id = ac.check_id
left join nodes n on c.node_id = n.id
where c.id = $1
on conflict(check_id)
-do update set cmdline = $2, intval = excluded.intval, enabled = excluded.enabled, mapping_id = excluded.mapping_id;`
+do update set cmdline = $2, intval = excluded.intval, enabled = excluded.enabled, mapping_id = excluded.mapping_id, checker_id = excluded.checker_id;`
SQLUpdateLastRefresh = `update checks set last_refresh = now() where id = $1;`
)