Documentation
¶
Overview ¶
Package raftnode provides an optional Dragonboat multi-group Raft adapter for Vale.
Index ¶
- Constants
- Variables
- func NodeHostConfig(cfg Config) dragonconfig.NodeHostConfig
- type CertificateLockCommand
- type CertificateLockRecord
- type CertificateRecord
- type Command
- type CommandResult
- type Config
- type Discovery
- type DiscoveryNode
- type GroupConfig
- type MemberlistDiscovery
- func (d *MemberlistDiscovery) GetBroadcasts(_, _ int) [][]byte
- func (d *MemberlistDiscovery) LocalState(bool) []byte
- func (d *MemberlistDiscovery) MergeRemoteState([]byte, bool)
- func (d *MemberlistDiscovery) NodeMeta(limit int) []byte
- func (d *MemberlistDiscovery) NotifyJoin(node *memberlist.Node)
- func (d *MemberlistDiscovery) NotifyLeave(node *memberlist.Node)
- func (d *MemberlistDiscovery) NotifyMsg([]byte)
- func (d *MemberlistDiscovery) NotifyUpdate(node *memberlist.Node)
- func (d *MemberlistDiscovery) Peers() *collectionlist.List[DiscoveryNode]
- func (d *MemberlistDiscovery) Shutdown() error
- func (d *MemberlistDiscovery) Start(ctx context.Context, local DiscoveryNode, onChange func()) error
- type MemberlistDiscoveryConfig
- type Node
- func (n *Node) AddGroupVoter(group, id, address string, timeout time.Duration) error
- func (n *Node) AddVoter(id, address string, timeout time.Duration) error
- func (n *Node) AppliedGroupState(group string) State
- func (n *Node) AppliedGroupStateJSON(group string, timeout time.Duration) ([]byte, error)
- func (n *Node) AppliedState() State
- func (n *Node) Apply(data []byte, timeout time.Duration) error
- func (n *Node) ApplyGroup(group string, data []byte, timeout time.Duration) error
- func (n *Node) GroupPeers(group string) (*collectionlist.List[*Peer], error)
- func (n *Node) IsEnabled() bool
- func (n *Node) IsGroupLeader(group string) bool
- func (n *Node) IsLeader() bool
- func (n *Node) Peers() (*collectionlist.List[*Peer], error)
- func (n *Node) ProposeGroup(group string, data []byte, timeout time.Duration) ([]byte, error)
- func (n *Node) RemoveGroupServer(group, id string, timeout time.Duration) error
- func (n *Node) RemoveServer(id string, timeout time.Duration) error
- func (n *Node) Shutdown() error
- func (n *Node) Status() *mapping.Map[string, any]
- type Peer
- type RouteRecord
- type SnapshotUpdate
- type State
Constants ¶
View Source
const ( MetadataGroupName = "metadata" MetadataGroupID = uint64(1) DataGroupName = "data" DataGroupID = uint64(2) CertificatesGroupName = "certificates" CertificatesGroupID = uint64(3) DefaultGroupName = DataGroupName DefaultGroupID = DataGroupID )
View Source
const ( CommandTypeSnapshotUpdate = "snapshot_update" CommandTypeRouteSync = "route_sync" CommandTypeCertificateStore = "certificate_store" CommandTypeCertificateDelete = "certificate_delete" CommandTypeCertificateLockAcquire = "certificate_lock_acquire" CommandTypeCertificateLockRelease = "certificate_lock_release" )
View Source
const (
DefaultGossipBindAddr = "127.0.0.1:17100"
)
Variables ¶
View Source
var ErrNotRunning = errors.New("raft node is not running")
ErrNotRunning is returned when a membership operation targets a stopped node.
Functions ¶
func NodeHostConfig ¶ added in v0.1.1
func NodeHostConfig(cfg Config) dragonconfig.NodeHostConfig
NodeHostConfig returns the Dragonboat NodeHost configuration used by Vale when Config.NodeHost is not supplied.
Types ¶
type CertificateLockCommand ¶ added in v0.1.1
type CertificateLockRecord ¶ added in v0.1.1
type CertificateRecord ¶ added in v0.1.1
type Command ¶
type Command struct {
Type string `json:"type"`
Snapshot *SnapshotUpdate `json:"snapshot,omitempty"`
Routes *collectionlist.List[RouteRecord] `json:"routes,omitempty"`
Certificate *CertificateRecord `json:"certificate,omitempty"`
Lock *CertificateLockCommand `json:"lock,omitempty"`
Raw json.RawMessage `json:"raw,omitempty"`
}
type CommandResult ¶ added in v0.1.1
type Config ¶
type Config struct {
NodeID string
BindAddr string
DataDir string
Bootstrap bool
DeploymentID uint64
RTTMillisecond uint64
NodeHost *dragonboat.NodeHost
LogDB dragonconfig.LogDBConfig
Groups *collectionlist.List[GroupConfig]
Discovery Discovery
DiscoveryReconcileInterval time.Duration
DiscoveryJoinTimeout time.Duration
}
func DefaultConfig ¶
func DefaultConfig() Config
type Discovery ¶ added in v0.1.1
type Discovery interface {
Start(ctx context.Context, local DiscoveryNode, onChange func()) error
Peers() *collectionlist.List[DiscoveryNode]
Shutdown() error
}
type DiscoveryNode ¶ added in v0.1.1
type GroupConfig ¶ added in v0.1.1
type MemberlistDiscovery ¶ added in v0.1.1
type MemberlistDiscovery struct {
// contains filtered or unexported fields
}
func NewMemberlistDiscovery ¶ added in v0.1.1
func NewMemberlistDiscovery(config MemberlistDiscoveryConfig, logger *slog.Logger) *MemberlistDiscovery
func (*MemberlistDiscovery) GetBroadcasts ¶ added in v0.1.1
func (d *MemberlistDiscovery) GetBroadcasts(_, _ int) [][]byte
func (*MemberlistDiscovery) LocalState ¶ added in v0.1.1
func (d *MemberlistDiscovery) LocalState(bool) []byte
func (*MemberlistDiscovery) MergeRemoteState ¶ added in v0.1.1
func (d *MemberlistDiscovery) MergeRemoteState([]byte, bool)
func (*MemberlistDiscovery) NodeMeta ¶ added in v0.1.1
func (d *MemberlistDiscovery) NodeMeta(limit int) []byte
func (*MemberlistDiscovery) NotifyJoin ¶ added in v0.1.1
func (d *MemberlistDiscovery) NotifyJoin(node *memberlist.Node)
func (*MemberlistDiscovery) NotifyLeave ¶ added in v0.1.1
func (d *MemberlistDiscovery) NotifyLeave(node *memberlist.Node)
func (*MemberlistDiscovery) NotifyMsg ¶ added in v0.1.1
func (d *MemberlistDiscovery) NotifyMsg([]byte)
func (*MemberlistDiscovery) NotifyUpdate ¶ added in v0.1.1
func (d *MemberlistDiscovery) NotifyUpdate(node *memberlist.Node)
func (*MemberlistDiscovery) Peers ¶ added in v0.1.1
func (d *MemberlistDiscovery) Peers() *collectionlist.List[DiscoveryNode]
func (*MemberlistDiscovery) Shutdown ¶ added in v0.1.1
func (d *MemberlistDiscovery) Shutdown() error
func (*MemberlistDiscovery) Start ¶ added in v0.1.1
func (d *MemberlistDiscovery) Start(ctx context.Context, local DiscoveryNode, onChange func()) error
type MemberlistDiscoveryConfig ¶ added in v0.1.1
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
func (*Node) AddGroupVoter ¶ added in v0.1.1
func (*Node) AppliedGroupState ¶ added in v0.1.1
func (*Node) AppliedGroupStateJSON ¶ added in v0.1.1
func (*Node) AppliedState ¶
func (*Node) ApplyGroup ¶ added in v0.1.1
func (*Node) GroupPeers ¶ added in v0.1.1
func (*Node) IsGroupLeader ¶ added in v0.1.1
func (*Node) ProposeGroup ¶ added in v0.1.1
func (*Node) RemoveGroupServer ¶ added in v0.1.1
type RouteRecord ¶
type SnapshotUpdate ¶
type State ¶
type State struct {
Version uint64 `json:"version"`
AppliedAt time.Time `json:"applied_at"`
Snapshot *SnapshotUpdate `json:"snapshot,omitempty"`
Routes *collectionlist.List[RouteRecord] `json:"routes,omitempty"`
Certificates *collectionlist.List[CertificateRecord] `json:"certificates,omitempty"`
Locks *collectionlist.List[CertificateLockRecord] `json:"locks,omitempty"`
Raw json.RawMessage `json:"raw,omitempty"`
}
Click to show internal directories.
Click to hide internal directories.