From ab12dd67d4842eccc6634502bda36b8b4df7deb1 Mon Sep 17 00:00:00 2001 From: ston1th Date: Sun, 7 Mar 2021 14:04:06 +0100 Subject: [PATCH] fixed kv errors --- pkg/cluster/cluster.go | 7 +++++++ pkg/controller/vip.go | 4 ++-- pkg/etcd/cluster.go | 4 ++-- pkg/raft/kv.go | 16 +++++----------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 1ca96ec..d33c33c 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -2,11 +2,18 @@ package cluster import ( "context" + "errors" "git.giftfish.de/ston1th/haproxy-lb/pkg/config" "github.com/go-logr/logr" ) +var ( + ErrNotLeader = errors.New("not leader") + ErrKeyNotFound = errors.New("key not found") + ErrPrefixNotFound = errors.New("prefix not found") +) + type Cluster interface { Start(*config.Config) error SetCallbacks(Callbacks) error diff --git a/pkg/controller/vip.go b/pkg/controller/vip.go index 293f604..f4ae16c 100644 --- a/pkg/controller/vip.go +++ b/pkg/controller/vip.go @@ -45,8 +45,8 @@ func NewLBController(cfg *config.Config, srv *api.Server, log logr.Logger) (call for { cc.Info("leading", "id", cc.ID()) ips, err := db.GetIPs() - if err != nil { - cc.Error(err, "error updating haproxy config") + if err != nil && err != cluster.ErrPrefixNotFound { + cc.Error(err, "error reading ip list") <-t.C continue } diff --git a/pkg/etcd/cluster.go b/pkg/etcd/cluster.go index b1d9645..2202e99 100644 --- a/pkg/etcd/cluster.go +++ b/pkg/etcd/cluster.go @@ -49,7 +49,7 @@ func (c *Cluster) Get(k string) (v []byte, err error) { return } if len(r.Kvs) == 0 { - err = ErrKeyNotFound + err = cluster.ErrKeyNotFound return } v = r.Kvs[0].Value @@ -62,7 +62,7 @@ func (c *Cluster) GetPrefix(k string) (m map[string][]byte, err error) { return } if len(r.Kvs) == 0 { - err = ErrPrefixNotFound + err = cluster.ErrPrefixNotFound return } m = make(map[string][]byte) diff --git a/pkg/raft/kv.go b/pkg/raft/kv.go index fc201e3..2a3b0a3 100644 --- a/pkg/raft/kv.go +++ b/pkg/raft/kv.go @@ -1,20 +1,14 @@ package raft import ( - "errors" "strings" "sync" + "git.giftfish.de/ston1th/haproxy-lb/pkg/cluster" "git.giftfish.de/ston1th/raftbbolt/msgpack" "github.com/hashicorp/raft" ) -var ( - ErrNotLeader = errors.New("raft: not leader") - ErrKeyNotFound = errors.New("raft: key not found") - ErrPrefixNotFound = errors.New("raft: prefix not found") -) - type kvm map[string][]byte type kv struct { @@ -28,7 +22,7 @@ func (kv *kv) Get(k string) ([]byte, error) { defer kv.mu.Unlock() v, ok := kv.m[k] if !ok { - return nil, ErrKeyNotFound + return nil, cluster.ErrKeyNotFound } return v, nil } @@ -43,14 +37,14 @@ func (kv *kv) GetPrefix(pk string) (m map[string][]byte, err error) { } } if len(m) == 0 { - err = ErrPrefixNotFound + err = cluster.ErrPrefixNotFound } return } func (kv *kv) Set(k string, v []byte) error { if kv.r.State() != raft.Leader { - return ErrNotLeader + return cluster.ErrNotLeader } c := &raftCmd{SET, k, v} @@ -66,7 +60,7 @@ func (kv *kv) Set(k string, v []byte) error { // Delete deletes the given key. func (kv *kv) Delete(k string) error { if kv.r.State() != raft.Leader { - return ErrNotLeader + return cluster.ErrNotLeader } c := &raftCmd{Op: DELETE, K: k}