Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var CommandsSummaries = []prometheus.SummaryDefinition{ { Name: []string{"fsm", "register"}, Help: "Measures the time it takes to apply a catalog register operation to the FSM.", }, { Name: []string{"fsm", "deregister"}, Help: "Measures the time it takes to apply a catalog deregister operation to the FSM.", }, { Name: []string{"fsm", "kvs"}, Help: "Measures the time it takes to apply the given KV operation to the FSM.", }, { Name: []string{"fsm", "session"}, Help: "Measures the time it takes to apply the given session operation to the FSM.", }, { Name: []string{"fsm", "acl"}, Help: "Measures the time it takes to apply the given ACL operation to the FSM.", }, { Name: []string{"fsm", "tombstone"}, Help: "Measures the time it takes to apply the given tombstone operation to the FSM.", }, { Name: []string{"fsm", "coordinate", "batch-update"}, Help: "Measures the time it takes to apply the given batch coordinate update to the FSM.", }, { Name: []string{"fsm", "prepared-query"}, Help: "Measures the time it takes to apply the given prepared query update operation to the FSM.", }, { Name: []string{"fsm", "txn"}, Help: "Measures the time it takes to apply the given transaction update to the FSM.", }, { Name: []string{"fsm", "autopilot"}, Help: "Measures the time it takes to apply the given autopilot update to the FSM.", }, { Name: []string{"consul", "fsm", "intention"}, Help: "Deprecated - use fsm_intention instead", }, { Name: []string{"fsm", "intention"}, Help: "Measures the time it takes to apply an intention operation to the FSM.", }, { Name: []string{"consul", "fsm", "ca"}, Help: "Deprecated - use fsm_ca instead", }, { Name: []string{"fsm", "ca"}, Help: "Measures the time it takes to apply CA configuration operations to the FSM.", }, { Name: []string{"fsm", "ca", "leaf"}, Help: "Measures the time it takes to apply an operation while signing a leaf certificate.", }, { Name: []string{"fsm", "acl", "token"}, Help: "Measures the time it takes to apply an ACL token operation to the FSM.", }, { Name: []string{"fsm", "acl", "policy"}, Help: "Measures the time it takes to apply an ACL policy operation to the FSM.", }, { Name: []string{"fsm", "acl", "bindingrule"}, Help: "Measures the time it takes to apply an ACL binding rule operation to the FSM.", }, { Name: []string{"fsm", "acl", "authmethod"}, Help: "Measures the time it takes to apply an ACL authmethod operation to the FSM.", }, { Name: []string{"fsm", "system_metadata"}, Help: "Measures the time it takes to apply a system metadata operation to the FSM.", }, { Name: []string{"fsm", "peering"}, Help: "Measures the time it takes to apply a peering operation to the FSM.", }, }
var SnapshotSummaries = []prometheus.SummaryDefinition{ { Name: []string{"fsm", "persist"}, Help: "Measures the time it takes to persist the FSM to a raft snapshot.", }, }
Functions ¶
func ReadSnapshot ¶
func ReadSnapshot(r io.Reader, handler func(header *SnapshotHeader, msg structs.MessageType, dec *codec.Decoder) error) error
ReadSnapshot decodes each message type and utilizes the handler function to process each message type individually
Types ¶
type Deps ¶
type Deps struct {
// Logger used to emit log messages
Logger hclog.Logger
// NewStateStore returns a state.Store which the FSM will use to make changes
// to the state.
// NewStateStore will be called once when the FSM is created and again any
// time Restore() is called.
NewStateStore func() *state.Store
Publisher *stream.EventPublisher
// StorageBackend is the storage backend used by the resource service, it
// manages its own state and has methods for handling Raft logs, snapshotting,
// and restoring snapshots.
StorageBackend StorageBackend
}
Deps are dependencies used to construct the FSM.
type FSM ¶
type FSM struct {
// contains filtered or unexported fields
}
FSM implements a finite state machine that is used along with Raft to provide strong consistency. We implement this outside the Server to avoid exposing this outside the package.
func NewFromDeps ¶
NewFromDeps creates a new FSM from its dependencies.
func (*FSM) ChunkingFSM ¶
type SnapshotHeader ¶
type SnapshotHeader struct {
// LastIndex is the last index that affects the data.
// This is used when we do the restore for watchers.
LastIndex uint64
}
SnapshotHeader is the first entry in our snapshot
type StorageBackend ¶
type StorageBackend interface {
Apply(buf []byte, idx uint64) any
Snapshot() (*raftstorage.Snapshot, error)
Restore() (*raftstorage.Restoration, error)
}
StorageBackend contains the methods on the Raft resource storage backend that are used by the FSM. See the internal/storage/raft package docs for more info.
var NullStorageBackend StorageBackend = nullStorageBackend{}
NullStorageBackend can be used as the StorageBackend dependency in tests that won't exercize resource storage or snapshotting.