Documentation ¶
Index ¶
- Variables
- type CancelFunc
- type Manager
- func (mgr *Manager) CancelTransactionNodeVoter(transactionID uint64, node string) error
- func (mgr *Manager) Collect(metrics chan<- prometheus.Metric)
- func (mgr *Manager) Describe(descs chan<- *prometheus.Desc)
- func (mgr *Manager) RegisterTransaction(ctx context.Context, voters []Voter, threshold uint) (Transaction, CancelFunc, error)
- func (mgr *Manager) StopTransaction(ctx context.Context, transactionID uint64) error
- func (mgr *Manager) VoteTransaction(ctx context.Context, transactionID uint64, node string, vote voting.Vote) error
- type Transaction
- type VoteResult
- type Voter
Constants ¶
This section is empty.
Variables ¶
var ( // ErrDuplicateNodes indicates a transaction was registered with two // voters having the same name. ErrDuplicateNodes = errors.New("transactions cannot have duplicate nodes") // ErrMissingNodes indicates a transaction was registered with no voters. ErrMissingNodes = errors.New("transaction requires at least one node") // ErrInvalidThreshold indicates a transaction was registered with an // invalid threshold that may either allow for multiple different // quorums or none at all. ErrInvalidThreshold = errors.New("transaction has invalid threshold") // ErrTransactionFailed indicates the transaction didn't reach quorum. ErrTransactionFailed = errors.New("transaction did not reach quorum") // ErrTransactionCanceled indicates the transaction was canceled before // reaching quorum. ErrTransactionCanceled = errors.New("transaction has been canceled") // ErrTransactionStopped indicates the transaction was gracefully stopped. ErrTransactionStopped = errors.New("transaction has been stopped") )
var ErrNotFound = errors.New("transaction not found")
Functions ¶
This section is empty.
Types ¶
type CancelFunc ¶
type CancelFunc func() error
CancelFunc is the transaction cancellation function returned by `RegisterTransaction`. Calling it will cause the transaction to be removed from the transaction manager.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles reference transactions for Praefect. It is required in order for Praefect to handle transactions directly instead of having to reach out to reference transaction RPCs.
func NewManager ¶
NewManager creates a new transactions Manager.
func (*Manager) CancelTransactionNodeVoter ¶ added in v15.6.0
CancelTransactionNodeVoter cancels the voter associated with the specified transaction and node. Voters are canceled when the node RPC fails and its votes can no longer count towards quorum.
func (*Manager) Collect ¶
func (mgr *Manager) Collect(metrics chan<- prometheus.Metric)
func (*Manager) Describe ¶
func (mgr *Manager) Describe(descs chan<- *prometheus.Desc)
func (*Manager) RegisterTransaction ¶
func (mgr *Manager) RegisterTransaction(ctx context.Context, voters []Voter, threshold uint) (Transaction, CancelFunc, error)
RegisterTransaction registers a new reference transaction for a set of nodes taking part in the transaction. `threshold` is the threshold at which an election will succeed. It needs to be in the range `weight(voters)/2 < threshold <= weight(voters) to avoid indecidable votes.
func (*Manager) StopTransaction ¶
StopTransaction will gracefully stop a transaction.
type Transaction ¶
type Transaction interface { // ID returns the ID of the transaction which uniquely identifies the transaction. ID() uint64 // CountSubtransactions counts the number of subtransactions. CountSubtransactions() int // State returns the state of each voter part of the transaction. State() (map[string]VoteResult, error) // DidVote returns whether the given node has cast a vote. DidVote(string) bool }
Transaction is an interface for transactions.
type VoteResult ¶
type VoteResult int
VoteResult represents the outcome of a transaction for a single voter.
const ( // VoteUndecided means that the voter either didn't yet show up or that // the vote couldn't yet be decided due to there being no majority yet. VoteUndecided VoteResult = iota // VoteCommitted means that the voter committed his vote. VoteCommitted // VoteFailed means that the voter has failed the vote because a // majority of nodes has elected a different result. VoteFailed // VoteCanceled means that the transaction was cancelled. VoteCanceled // VoteStopped means that the transaction was gracefully stopped. VoteStopped )
type Voter ¶
type Voter struct { // Name of the voter, usually Gitaly's storage name. Name string // Votes is the number of votes available to this voter in the voting // process. `0` means the outcome of the vote will not be influenced by // this voter. Votes uint // contains filtered or unexported fields }
Voter is a participant in a given transaction that may cast a vote.