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/chanfitness"
|
||||||
"github.com/lightningnetwork/lnd/channeldb"
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
"github.com/lightningnetwork/lnd/channelnotifier"
|
"github.com/lightningnetwork/lnd/channelnotifier"
|
||||||
|
"github.com/lightningnetwork/lnd/cluster"
|
||||||
"github.com/lightningnetwork/lnd/contractcourt"
|
"github.com/lightningnetwork/lnd/contractcourt"
|
||||||
"github.com/lightningnetwork/lnd/discovery"
|
"github.com/lightningnetwork/lnd/discovery"
|
||||||
"github.com/lightningnetwork/lnd/funding"
|
"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, chainreg.Subsystem, interceptor, chainreg.UseLogger)
|
||||||
AddSubLogger(root, chanacceptor.Subsystem, interceptor, chanacceptor.UseLogger)
|
AddSubLogger(root, chanacceptor.Subsystem, interceptor, chanacceptor.UseLogger)
|
||||||
AddSubLogger(root, funding.Subsystem, interceptor, funding.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
|
// AddSubLogger is a helper method to conveniently create and register the
|
||||||
|
Loading…
Reference in New Issue
Block a user