Documentation ¶
Overview ¶
Package ae provides tools to synchronize state between local and remote consul servers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type StateSyncer ¶
type StateSyncer struct { // State contains the data that needs to be synchronized. State SyncState // Interval is the time between two full sync runs. Interval time.Duration // ShutdownCh is closed when the application is shutting down. ShutdownCh chan struct{} // Logger is the logger. Logger hclog.Logger // ClusterSize returns the number of members in the cluster to // allow staggering the sync runs based on cluster size. // This needs to be set before Run() is called. ClusterSize func() int // SyncFull allows triggering an immediate but staggered full sync // in a non-blocking way. SyncFull *Trigger // SyncChanges allows triggering an immediate partial sync // in a non-blocking way. SyncChanges *Trigger // contains filtered or unexported fields }
StateSyncer manages background synchronization of the given state.
The state is synchronized on a regular basis or on demand when either the state has changed or a new Consul server has joined the cluster.
The regular state synchronization provides a self-healing mechanism for the cluster which is also called anti-entropy.
func NewStateSyncer ¶
func NewStateSyncer(state SyncState, intv time.Duration, shutdownCh chan struct{}, logger hclog.Logger) *StateSyncer
func (*StateSyncer) Paused ¶
func (s *StateSyncer) Paused() bool
Paused returns whether sync runs are temporarily disabled.
func (*StateSyncer) Resume ¶
func (s *StateSyncer) Resume() bool
Resume re-enables sync runs. It returns true if it was the last pause/resume pair on the stack and so actually caused the state syncer to resume.
func (*StateSyncer) Run ¶
func (s *StateSyncer) Run()
Run is the long running method to perform state synchronization between local and remote servers.
type Trigger ¶
type Trigger struct {
// contains filtered or unexported fields
}
Trigger implements a non-blocking event notifier. Events can be triggered without blocking and notifications happen only when the previous event was consumed.
func NewTrigger ¶
func NewTrigger() *Trigger