Documentation
¶
Index ¶
- type GrpcTransport
- func (t *GrpcTransport) AppendEntries(id raft.ServerID, target raft.ServerAddress, args *raft.AppendEntriesRequest, ...) error
- func (t *GrpcTransport) AppendEntriesPipeline(id raft.ServerID, target raft.ServerAddress) (raft.AppendPipeline, error)
- func (t *GrpcTransport) Close() error
- func (t *GrpcTransport) Consumer() <-chan raft.RPC
- func (t *GrpcTransport) DecodePeer(buf []byte) raft.ServerAddress
- func (t *GrpcTransport) EncodePeer(id raft.ServerID, addr raft.ServerAddress) []byte
- func (t *GrpcTransport) InstallSnapshot(id raft.ServerID, target raft.ServerAddress, args *raft.InstallSnapshotRequest, ...) error
- func (t *GrpcTransport) LocalAddr() raft.ServerAddress
- func (t *GrpcTransport) RequestPreVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestPreVoteRequest, ...) error
- func (t *GrpcTransport) RequestVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestVoteRequest, ...) error
- func (t *GrpcTransport) SetHeartbeatHandler(cb func(rpc raft.RPC))
- func (t *GrpcTransport) TimeoutNow(id raft.ServerID, target raft.ServerAddress, args *raft.TimeoutNowRequest, ...) error
- type MigrationTransport
- func (t *MigrationTransport) AppendEntries(id raft.ServerID, target raft.ServerAddress, args *raft.AppendEntriesRequest, ...) error
- func (t *MigrationTransport) AppendEntriesPipeline(id raft.ServerID, target raft.ServerAddress) (raft.AppendPipeline, error)
- func (t *MigrationTransport) Close() error
- func (t *MigrationTransport) Consumer() <-chan raft.RPC
- func (t *MigrationTransport) DecodePeer(buf []byte) raft.ServerAddress
- func (t *MigrationTransport) EncodePeer(id raft.ServerID, addr raft.ServerAddress) []byte
- func (t *MigrationTransport) InstallSnapshot(id raft.ServerID, target raft.ServerAddress, args *raft.InstallSnapshotRequest, ...) error
- func (t *MigrationTransport) LocalAddr() raft.ServerAddress
- func (t *MigrationTransport) RequestVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestVoteRequest, ...) error
- func (t *MigrationTransport) SetHeartbeatHandler(cb func(rpc raft.RPC))
- func (t *MigrationTransport) TimeoutNow(id raft.ServerID, target raft.ServerAddress, args *raft.TimeoutNowRequest, ...) error
- type TransportOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GrpcTransport ¶
type GrpcTransport struct {
// contains filtered or unexported fields
}
GrpcTransport implements raft.Transport using gRPC.
func NewGrpcTransport ¶
func NewGrpcTransport(localAddr string, server *grpc.Server, opts ...TransportOption) (*GrpcTransport, error)
NewGrpcTransport creates a new GrpcTransport and registers it with the given gRPC server. The user is responsible for starting and serving the gRPC server.
func (*GrpcTransport) AppendEntries ¶
func (t *GrpcTransport) AppendEntries(id raft.ServerID, target raft.ServerAddress, args *raft.AppendEntriesRequest, resp *raft.AppendEntriesResponse) error
AppendEntries sends an AppendEntries RPC to the given target.
func (*GrpcTransport) AppendEntriesPipeline ¶
func (t *GrpcTransport) AppendEntriesPipeline(id raft.ServerID, target raft.ServerAddress) (raft.AppendPipeline, error)
AppendEntriesPipeline returns an interface that can be used to pipeline AppendEntries requests.
func (*GrpcTransport) Close ¶
func (t *GrpcTransport) Close() error
Close closes the transport connections to peers. The gRPC server and listener are NOT closed.
func (*GrpcTransport) Consumer ¶
func (t *GrpcTransport) Consumer() <-chan raft.RPC
Consumer returns a channel that can be used to consume upcoming RPCs.
func (*GrpcTransport) DecodePeer ¶
func (t *GrpcTransport) DecodePeer(buf []byte) raft.ServerAddress
DecodePeer is used to deserialize a peer's address.
func (*GrpcTransport) EncodePeer ¶
func (t *GrpcTransport) EncodePeer(id raft.ServerID, addr raft.ServerAddress) []byte
EncodePeer is used to serialize a peer's address.
func (*GrpcTransport) InstallSnapshot ¶
func (t *GrpcTransport) InstallSnapshot(id raft.ServerID, target raft.ServerAddress, args *raft.InstallSnapshotRequest, resp *raft.InstallSnapshotResponse, data io.Reader) error
InstallSnapshot sends an InstallSnapshot RPC to the given target.
func (*GrpcTransport) LocalAddr ¶
func (t *GrpcTransport) LocalAddr() raft.ServerAddress
LocalAddr returns the local address of the transport.
func (*GrpcTransport) RequestPreVote ¶ added in v0.2.0
func (t *GrpcTransport) RequestPreVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestPreVoteRequest, resp *raft.RequestPreVoteResponse) error
RequestPreVote sends a RequestPreVote RPC to the given target.
func (*GrpcTransport) RequestVote ¶
func (t *GrpcTransport) RequestVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestVoteRequest, resp *raft.RequestVoteResponse) error
RequestVote sends a RequestVote RPC to the given target.
func (*GrpcTransport) SetHeartbeatHandler ¶
func (t *GrpcTransport) SetHeartbeatHandler(cb func(rpc raft.RPC))
SetHeartbeatHandler is used to setup a heartbeat handler as a fast-pass. This is optional.
func (*GrpcTransport) TimeoutNow ¶
func (t *GrpcTransport) TimeoutNow(id raft.ServerID, target raft.ServerAddress, args *raft.TimeoutNowRequest, resp *raft.TimeoutNowResponse) error
TimeoutNow is used to start a leadership transfer to the target node.
type MigrationTransport ¶
type MigrationTransport struct {
// contains filtered or unexported fields
}
MigrationTransport wraps two transports (Primary and Secondary) and allows failing over to the Secondary transport if the Primary fails with a specific error. It also merges incoming RPCs from both transports.
func NewMigrationTransport ¶
func NewMigrationTransport(primary, secondary raft.Transport, shouldFallback func(error) bool) *MigrationTransport
NewMigrationTransport creates a new MigrationTransport.
func (*MigrationTransport) AppendEntries ¶
func (t *MigrationTransport) AppendEntries(id raft.ServerID, target raft.ServerAddress, args *raft.AppendEntriesRequest, resp *raft.AppendEntriesResponse) error
func (*MigrationTransport) AppendEntriesPipeline ¶
func (t *MigrationTransport) AppendEntriesPipeline(id raft.ServerID, target raft.ServerAddress) (raft.AppendPipeline, error)
func (*MigrationTransport) Close ¶
func (t *MigrationTransport) Close() error
func (*MigrationTransport) Consumer ¶
func (t *MigrationTransport) Consumer() <-chan raft.RPC
Consumer returns a channel that can be used to consume upcoming RPCs.
func (*MigrationTransport) DecodePeer ¶
func (t *MigrationTransport) DecodePeer(buf []byte) raft.ServerAddress
func (*MigrationTransport) EncodePeer ¶
func (t *MigrationTransport) EncodePeer(id raft.ServerID, addr raft.ServerAddress) []byte
func (*MigrationTransport) InstallSnapshot ¶
func (t *MigrationTransport) InstallSnapshot(id raft.ServerID, target raft.ServerAddress, args *raft.InstallSnapshotRequest, resp *raft.InstallSnapshotResponse, data io.Reader) error
func (*MigrationTransport) LocalAddr ¶
func (t *MigrationTransport) LocalAddr() raft.ServerAddress
LocalAddr returns the local address of the transport. It defaults to the Primary's address.
func (*MigrationTransport) RequestVote ¶
func (t *MigrationTransport) RequestVote(id raft.ServerID, target raft.ServerAddress, args *raft.RequestVoteRequest, resp *raft.RequestVoteResponse) error
func (*MigrationTransport) SetHeartbeatHandler ¶
func (t *MigrationTransport) SetHeartbeatHandler(cb func(rpc raft.RPC))
func (*MigrationTransport) TimeoutNow ¶
func (t *MigrationTransport) TimeoutNow(id raft.ServerID, target raft.ServerAddress, args *raft.TimeoutNowRequest, resp *raft.TimeoutNowResponse) error
type TransportOption ¶
type TransportOption func(*GrpcTransport)
TransportOption is a functional option for GrpcTransport.
func WithTimeout ¶
func WithTimeout(d time.Duration) TransportOption
WithTimeout sets the timeout for RPCs.