Browse Source

cluster: add cluster package skeleton and LeaderElector interface

master
Andras Banki-Horvath 3 years ago
parent
commit
e62dbca11a
No known key found for this signature in database
GPG Key ID: 80E5375C094198D8
  1. 26
      cluster/interface.go
  2. 27
      cluster/log.go
  3. 2
      log.go

26
cluster/interface.go

@ -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

@ -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

@ -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…
Cancel
Save