cluster: add cluster package skeleton and LeaderElector interface
This commit is contained in:
parent
282618441d
commit
e62dbca11a
26
cluster/interface.go
Normal file
26
cluster/interface.go
Normal file
@ -0,0 +1,26 @@
|
||||
package cluster
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
const (
|
||||
// EtcdLeaderElector is the id used when constructing an
|
||||
// etcdLeaderElector instance through the factory.
|
||||
EtcdLeaderElector = "etcd"
|
||||
)
|
||||
|
||||
// LeaderElector is a general interface implementing basic leader elections
|
||||
// in a clustered environment.
|
||||
type LeaderElector interface {
|
||||
// Campaign starts a run for leadership. Campaign will block until
|
||||
// the caller is elected as the leader.
|
||||
Campaign(ctx context.Context) error
|
||||
|
||||
// Resign resigns from the leader role, allowing other election members
|
||||
// to take on leadership.
|
||||
Resign() error
|
||||
|
||||
// Leader returns the leader value for the current election.
|
||||
Leader(ctx context.Context) (string, error)
|
||||
}
|
27
cluster/log.go
Normal file
27
cluster/log.go
Normal file
@ -0,0 +1,27 @@
|
||||
package cluster
|
||||
|
||||
import (
|
||||
"github.com/btcsuite/btclog"
|
||||
"github.com/lightningnetwork/lnd/build"
|
||||
)
|
||||
|
||||
// Subsystem defines the logging code for this subsystem.
|
||||
const Subsystem = "CLUS"
|
||||
|
||||
// log is a logger that is initialized with the btclog.Disabled logger.
|
||||
var log btclog.Logger
|
||||
|
||||
// The default amount of logging is none.
|
||||
func init() {
|
||||
UseLogger(build.NewSubLogger(Subsystem, nil))
|
||||
}
|
||||
|
||||
// DisableLog disables all logging output.
|
||||
func DisableLog() {
|
||||
UseLogger(btclog.Disabled)
|
||||
}
|
||||
|
||||
// UseLogger uses a specified Logger to output package logging info.
|
||||
func UseLogger(logger btclog.Logger) {
|
||||
log = logger
|
||||
}
|
2
log.go
2
log.go
@ -14,6 +14,7 @@ import (
|
||||
"github.com/lightningnetwork/lnd/chanfitness"
|
||||
"github.com/lightningnetwork/lnd/channeldb"
|
||||
"github.com/lightningnetwork/lnd/channelnotifier"
|
||||
"github.com/lightningnetwork/lnd/cluster"
|
||||
"github.com/lightningnetwork/lnd/contractcourt"
|
||||
"github.com/lightningnetwork/lnd/discovery"
|
||||
"github.com/lightningnetwork/lnd/funding"
|
||||
@ -157,6 +158,7 @@ func SetupLoggers(root *build.RotatingLogWriter, interceptor signal.Interceptor)
|
||||
AddSubLogger(root, chainreg.Subsystem, interceptor, chainreg.UseLogger)
|
||||
AddSubLogger(root, chanacceptor.Subsystem, interceptor, chanacceptor.UseLogger)
|
||||
AddSubLogger(root, funding.Subsystem, interceptor, funding.UseLogger)
|
||||
AddSubLogger(root, cluster.Subsystem, interceptor, cluster.UseLogger)
|
||||
}
|
||||
|
||||
// AddSubLogger is a helper method to conveniently create and register the
|
||||
|
Loading…
Reference in New Issue
Block a user