Documentation
¶
Index ¶
- Constants
- Variables
- func CheckConfigMetadata(metadata *etcdraft.ConfigMetadata) error
- func ConfChange(blockMetadata *etcdraft.BlockMetadata, confState *raftpb.ConfState) *raftpb.ConfChange
- func ConfigChannelHeader(block *common.Block) (hdr *common.ChannelHeader, err error)
- func ConfigEnvelopeFromBlock(block *common.Block) (*common.Envelope, error)
- func ConsensusMetadataFromConfigBlock(block *common.Block) (*etcdraft.ConfigMetadata, error)
- func ConsentersToMap(consenters []*etcdraft.Consenter) map[string]struct{}
- func CreateConsentersMap(blockMetadata *etcdraft.BlockMetadata, configMetadata *etcdraft.ConfigMetadata) map[uint64]*etcdraft.Consenter
- func EndpointconfigFromSupport(support consensus.ConsenterSupport, bccsp bccsp.BCCSP) ([]cluster.EndpointCriteria, error)
- func ListSnapshots(logger *flogging.FabricLogger, snapDir string) []uint64
- func MembershipByCert(consenters map[uint64]*etcdraft.Consenter) map[string]uint64
- func MetadataFromConfigUpdate(update *common.ConfigUpdate) (*etcdraft.ConfigMetadata, error)
- func MetadataFromConfigValue(configValue *common.ConfigValue) (*etcdraft.ConfigMetadata, error)
- func MetadataHasDuplication(md *etcdraft.ConfigMetadata) error
- func NodeExists(id uint64, nodes []uint64) bool
- func RaftPeers(consenterIDs []uint64) []raft.Peer
- func ReadBlockMetadata(blockMetadata *common.Metadata, configMetadata *etcdraft.ConfigMetadata) (*etcdraft.BlockMetadata, error)
- type BlockPuller
- type Chain
- func (c *Chain) Configure(env *common.Envelope, configSeq uint64) error
- func (c *Chain) Consensus(req *orderer.ConsensusRequest, sender uint64) error
- func (c *Chain) Errored() <-chan struct{}
- func (c *Chain) Halt()
- func (c *Chain) Order(env *common.Envelope, configSeq uint64) error
- func (c *Chain) Start()
- func (c *Chain) Submit(req *orderer.SubmitRequest, sender uint64) error
- func (c *Chain) ValidateConsensusMetadata(oldMetadataBytes, newMetadataBytes []byte, newChannel bool) error
- func (c *Chain) WaitReady() error
- type ChainGetter
- type Config
- type Configurator
- type Consenter
- type ConsenterCertificate
- type CreateBlockPuller
- type CreateChainCallback
- type Dispatcher
- type Disseminator
- type InactiveChainRegistry
- type LedgerBlockPuller
- type MembershipChanges
- type MemoryStorage
- type MessageReceiver
- type Metrics
- type Options
- type PeriodicCheck
- type RPC
- type RaftStorage
- func (rs *RaftStorage) ApplySnapshot(snap raftpb.Snapshot)
- func (rs *RaftStorage) Close() error
- func (rs *RaftStorage) Snapshot() raftpb.Snapshot
- func (rs *RaftStorage) Store(entries []raftpb.Entry, hardstate raftpb.HardState, snapshot raftpb.Snapshot) error
- func (rs *RaftStorage) TakeSnapshot(i uint64, cs raftpb.ConfState, data []byte) error
- type ReceiverGetter
- type Tracker
Constants ¶
View Source
const ( BYTE = 1 << (10 * iota) KILOBYTE MEGABYTE GIGABYTE TERABYTE )
Variables ¶
View Source
var ( ActiveNodesOpts = metrics.GaugeOpts{ Namespace: "consensus", Subsystem: "etcdraft", Name: "active_nodes", Help: "Number of active nodes in this channel.", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } )
View Source
var MaxSnapshotFiles = 5
Functions ¶
func CheckConfigMetadata ¶
func CheckConfigMetadata(metadata *etcdraft.ConfigMetadata) error
func ConfChange ¶
func ConfChange(blockMetadata *etcdraft.BlockMetadata, confState *raftpb.ConfState) *raftpb.ConfChange
func ConfigChannelHeader ¶
func ConfigChannelHeader(block *common.Block) (hdr *common.ChannelHeader, err error)
func ConfigEnvelopeFromBlock ¶
func ConsensusMetadataFromConfigBlock ¶
func ConsensusMetadataFromConfigBlock(block *common.Block) (*etcdraft.ConfigMetadata, error)
func ConsentersToMap ¶
func CreateConsentersMap ¶
func CreateConsentersMap(blockMetadata *etcdraft.BlockMetadata, configMetadata *etcdraft.ConfigMetadata) map[uint64]*etcdraft.Consenter
func EndpointconfigFromSupport ¶
func EndpointconfigFromSupport(support consensus.ConsenterSupport, bccsp bccsp.BCCSP) ([]cluster.EndpointCriteria, error)
func ListSnapshots ¶
func ListSnapshots(logger *flogging.FabricLogger, snapDir string) []uint64
func MembershipByCert ¶
func MetadataFromConfigUpdate ¶
func MetadataFromConfigUpdate(update *common.ConfigUpdate) (*etcdraft.ConfigMetadata, error)
func MetadataFromConfigValue ¶
func MetadataFromConfigValue(configValue *common.ConfigValue) (*etcdraft.ConfigMetadata, error)
func MetadataHasDuplication ¶
func MetadataHasDuplication(md *etcdraft.ConfigMetadata) error
func NodeExists ¶
func ReadBlockMetadata ¶
func ReadBlockMetadata(blockMetadata *common.Metadata, configMetadata *etcdraft.ConfigMetadata) (*etcdraft.BlockMetadata, error)
Types ¶
type BlockPuller ¶
type BlockPuller interface {
PullBlock(seq uint64) *common.Block
HeightsByEndpoints() (map[string]uint64, error)
Close()
}
func NewBlockPuller ¶
func NewBlockPuller(support consensus.ConsenterSupport, baseDialer *cluster.PredicateDialer, clusterConfig localconfig.Cluster, bccsp bccsp.BCCSP, ) (BlockPuller, error)
type Chain ¶
type Chain struct {
ActiveNodes atomic.Value
Node *node
Metrics *Metrics
// contains filtered or unexported fields
}
func NewChain ¶
func NewChain( support consensus.ConsenterSupport, opts Options, conf Configurator, rpc RPC, f CreateBlockPuller, observeC chan<- raft.SoftState) (*Chain, error)
func (*Chain) Consensus ¶
func (c *Chain) Consensus(req *orderer.ConsensusRequest, sender uint64) error
func (*Chain) ValidateConsensusMetadata ¶
type ChainGetter ¶
type ChainGetter interface {
GetChain(chainID string) *multichannel.ChainSupport
}
type Configurator ¶
type Configurator interface {
Configure(channel string, newNodes []cluster.RemoteNode)
}
type Consenter ¶
type Consenter struct {
CreateChain func(chainName string)
InactiveChainRegistry InactiveChainRegistry
Dialer *cluster.PredicateDialer
Communication cluster.Communicator
*Dispatcher
Chains ChainGetter
Logger *flogging.FabricLogger
EtcdRaftConfig Config
OrdererConfig localconfig.TopLevel
Cert []byte
Metrics *Metrics
}
func New ¶
func New( clusterDialer *cluster.PredicateDialer, conf *localconfig.TopLevel, srvConf comm.ServerConfig, srv *comm.GRPCServer, r *multichannel.Registrar, icr InactiveChainRegistry, metricsProvider metrics.Provider, ) *Consenter
func (*Consenter) HandleChain ¶
func (*Consenter) ReceiverByChain ¶
func (c *Consenter) ReceiverByChain(channelID string) MessageReceiver
type ConsenterCertificate ¶
type ConsenterCertificate []byte
func (ConsenterCertificate) IsConsenterOfChannel ¶
func (conCert ConsenterCertificate) IsConsenterOfChannel(configBlock *common.Block) error
type CreateBlockPuller ¶
type CreateBlockPuller func() (BlockPuller, error)
type CreateChainCallback ¶
type CreateChainCallback func()
type Dispatcher ¶
type Dispatcher struct {
Logger *flogging.FabricLogger
ChainSelector ReceiverGetter
}
func (*Dispatcher) OnConsensus ¶
func (d *Dispatcher) OnConsensus(channel string, sender uint64, request *orderer.ConsensusRequest) error
func (*Dispatcher) OnSubmit ¶
func (d *Dispatcher) OnSubmit(channel string, sender uint64, request *orderer.SubmitRequest) error
type Disseminator ¶
type Disseminator struct {
RPC
// contains filtered or unexported fields
}
func (*Disseminator) SendConsensus ¶
func (d *Disseminator) SendConsensus(dest uint64, msg *orderer.ConsensusRequest) error
func (*Disseminator) UpdateMetadata ¶
func (d *Disseminator) UpdateMetadata(m []byte)
type InactiveChainRegistry ¶
type InactiveChainRegistry interface {
TrackChain(chainName string, genesisBlock *common.Block, createChain CreateChainCallback)
}
type LedgerBlockPuller ¶
type LedgerBlockPuller struct {
BlockPuller
BlockRetriever cluster.BlockRetriever
Height func() uint64
}
type MembershipChanges ¶
type MembershipChanges struct {
NewBlockMetadata *etcdraft.BlockMetadata
NewConsenters map[uint64]*etcdraft.Consenter
AddedNodes []*etcdraft.Consenter
RemovedNodes []*etcdraft.Consenter
ConfChange *raftpb.ConfChange
RotatedNode uint64
}
func ComputeMembershipChanges ¶
func ComputeMembershipChanges(oldMetadata *etcdraft.BlockMetadata, oldConsenters map[uint64]*etcdraft.Consenter, newConsenters []*etcdraft.Consenter) (mc *MembershipChanges, err error)
func (*MembershipChanges) Changed ¶
func (mc *MembershipChanges) Changed() bool
func (*MembershipChanges) Rotated ¶
func (mc *MembershipChanges) Rotated() bool
func (*MembershipChanges) String ¶
func (mc *MembershipChanges) String() string
func (*MembershipChanges) UnacceptableQuorumLoss ¶
func (mc *MembershipChanges) UnacceptableQuorumLoss(active []uint64) bool
type MemoryStorage ¶
type MessageReceiver ¶
type MessageReceiver interface {
Consensus(req *orderer.ConsensusRequest, sender uint64) error
Submit(req *orderer.SubmitRequest, sender uint64) error
}
type Metrics ¶
type Metrics struct {
ClusterSize metrics.Gauge
IsLeader metrics.Gauge
ActiveNodes metrics.Gauge
CommittedBlockNumber metrics.Gauge
SnapshotBlockNumber metrics.Gauge
LeaderChanges metrics.Counter
ProposalFailures metrics.Counter
DataPersistDuration metrics.Histogram
NormalProposalsReceived metrics.Counter
ConfigProposalsReceived metrics.Counter
}
func NewMetrics ¶
type Options ¶
type Options struct {
RaftID uint64
Clock clock.Clock
WALDir string
SnapDir string
SnapshotIntervalSize uint32
SnapshotCatchUpEntries uint64
MemoryStorage MemoryStorage
Logger *flogging.FabricLogger
TickInterval time.Duration
ElectionTick int
HeartbeatTick int
MaxSizePerMsg uint64
MaxInflightBlocks int
BlockMetadata *etcdraft.BlockMetadata
Consenters map[uint64]*etcdraft.Consenter
MigrationInit bool
Metrics *Metrics
Cert []byte
EvictionSuspicion time.Duration
LeaderCheckInterval time.Duration
}
type PeriodicCheck ¶
type PeriodicCheck struct {
Logger *flogging.FabricLogger
CheckInterval time.Duration
Condition func() bool
Report func(cumulativePeriod time.Duration)
// contains filtered or unexported fields
}
func (*PeriodicCheck) Run ¶
func (pc *PeriodicCheck) Run()
func (*PeriodicCheck) Stop ¶
func (pc *PeriodicCheck) Stop()
type RPC ¶
type RPC interface {
SendConsensus(dest uint64, msg *orderer.ConsensusRequest) error
SendSubmit(dest uint64, request *orderer.SubmitRequest) error
}
type RaftStorage ¶
type RaftStorage struct {
SnapshotCatchUpEntries uint64
// contains filtered or unexported fields
}
func CreateStorage ¶
func CreateStorage( lg *flogging.FabricLogger, walDir string, snapDir string, ram MemoryStorage, ) (*RaftStorage, error)
func (*RaftStorage) ApplySnapshot ¶
func (rs *RaftStorage) ApplySnapshot(snap raftpb.Snapshot)
func (*RaftStorage) Close ¶
func (rs *RaftStorage) Close() error
func (*RaftStorage) Snapshot ¶
func (rs *RaftStorage) Snapshot() raftpb.Snapshot
func (*RaftStorage) TakeSnapshot ¶
type ReceiverGetter ¶
type ReceiverGetter interface {
ReceiverByChain(channelID string) MessageReceiver
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.