lnd/cluster/etcd_elector_factory.go
Oliver Gugger 0b4e03f5fc
multi: add golang 1.17 compatible build tags
With go 1.17 a change to the build flags was implemented:
https://go.googlesource.com/proposal/+/master/design/draft-gobuild.md

The formatter now automatically adds the forward-compatible build tag
format and the linter checks for them, so we need to include them in our
code.
2021-09-29 17:31:37 -07:00

48 lines
1.1 KiB
Go

//go:build kvdb_etcd
// +build kvdb_etcd
package cluster
import (
"context"
"fmt"
"github.com/lightningnetwork/lnd/kvdb/etcd"
)
// makeEtcdElector will construct a new etcdLeaderElector. It expects a cancel
// context a unique (in the cluster) LND id and a *etcd.Config as arguments.
func makeEtcdElector(ctx context.Context, args ...interface{}) (LeaderElector,
error) {
if len(args) != 3 {
return nil, fmt.Errorf("invalid number of arguments to "+
"cluster.makeEtcdElector(): expected 3, got %v",
len(args))
}
id, ok := args[0].(string)
if !ok {
return nil, fmt.Errorf("invalid argument (0) to " +
"cluster.makeEtcdElector(), expected: string")
}
electionPrefix, ok := args[1].(string)
if !ok {
return nil, fmt.Errorf("invalid argument (1) to " +
"cluster.makeEtcdElector(), expected: string")
}
etcdCfg, ok := args[2].(*etcd.Config)
if !ok {
return nil, fmt.Errorf("invalid argument (2) to " +
"cluster.makeEtcdElector(), expected: *etcd.Config")
}
return newEtcdLeaderElector(ctx, id, electionPrefix, etcdCfg)
}
func init() {
RegisterLeaderElectorFactory(EtcdLeaderElector, makeEtcdElector)
}