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.