new logger and etcd fixes
This commit is contained in:
parent
ba001b4c20
commit
cbd4f38cca
11 changed files with 248 additions and 161 deletions
38
pkg/db/db.go
38
pkg/db/db.go
|
|
@ -1,7 +1,9 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
schemav1 "git.giftfish.de/ston1th/haproxy-lb/pkg/api/v1/schema"
|
||||
"git.giftfish.de/ston1th/haproxy-lb/pkg/cluster"
|
||||
|
|
@ -34,17 +36,37 @@ func (db *DB) GetIPs() (ips []string, err error) {
|
|||
return
|
||||
}
|
||||
func (db *DB) GetDeletedIPs() (ips []string, err error) {
|
||||
m, err := db.kv.GetPrefix(delPrefix)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for k := range m {
|
||||
ips = append(ips, k)
|
||||
db.kv.Delete(delPrefix + k)
|
||||
}
|
||||
err = timeout(func() error {
|
||||
m, err := db.kv.GetPrefix(delPrefix)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for k := range m {
|
||||
ips = append(ips, k)
|
||||
db.kv.Delete(delPrefix + k)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func timeout(f func() error) error {
|
||||
return timeoutWithDuration(f, time.Second*3)
|
||||
}
|
||||
func timeoutWithDuration(f func() error, d time.Duration) error {
|
||||
c := make(chan error, 1)
|
||||
go func() {
|
||||
e := f()
|
||||
c <- e
|
||||
}()
|
||||
select {
|
||||
case err := <-c:
|
||||
return err
|
||||
case <-time.After(d):
|
||||
return errors.New("timeout")
|
||||
}
|
||||
}
|
||||
|
||||
func (db *DB) GetCIDR(name string) (cidr string, err error) {
|
||||
b, err := db.GetLB(name)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue