Documentation ¶
Index ¶
- type LockBasedTxMgr
- func (txmgr *LockBasedTxMgr) Commit() error
- func (txmgr *LockBasedTxMgr) CommitLostBlock(blockAndPvtdata *ledger.BlockAndPvtData) error
- func (txmgr *LockBasedTxMgr) GetLastSavepoint() (*version.Height, error)
- func (txmgr *LockBasedTxMgr) NewQueryExecutor(txid string) (ledger.QueryExecutor, error)
- func (txmgr *LockBasedTxMgr) NewTxSimulator(txid string) (ledger.TxSimulator, error)
- func (txmgr *LockBasedTxMgr) RemoveStaleAndCommitPvtDataOfOldBlocks(blocksPvtData map[uint64][]*ledger.TxPvtData) error
- func (txmgr *LockBasedTxMgr) Rollback()
- func (txmgr *LockBasedTxMgr) ShouldRecover(lastAvailableBlock uint64) (bool, uint64, error)
- func (txmgr *LockBasedTxMgr) Shutdown()
- func (txmgr *LockBasedTxMgr) ValidateAndPrepare(blockAndPvtdata *ledger.BlockAndPvtData, doMVCCValidation bool) ([]*txmgr.TxStatInfo, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LockBasedTxMgr ¶
type LockBasedTxMgr struct {
// contains filtered or unexported fields
}
lockbasedtxmgr是接口“txmgmt.txmgr”的简单实现。 此实现使用读写锁来防止事务模拟和提交之间的冲突
func NewLockBasedTxMgr ¶
func NewLockBasedTxMgr(ledgerid string, db privacyenabledstate.DB, stateListeners []ledger.StateListener, btlPolicy pvtdatapolicy.BTLPolicy, bookkeepingProvider bookkeeping.Provider, ccInfoProvider ledger.DeployedChaincodeInfoProvider) (*LockBasedTxMgr, error)
newlockbasedtxmgr构造newlockbasedtxmgr的新实例
func (*LockBasedTxMgr) Commit ¶
func (txmgr *LockBasedTxMgr) Commit() error
commit在接口“txmgmt.txmgr”中实现方法
func (*LockBasedTxMgr) CommitLostBlock ¶
func (txmgr *LockBasedTxMgr) CommitLostBlock(blockAndPvtdata *ledger.BlockAndPvtData) error
commitListBlock在接口kvledger.recoverer中实现方法
func (*LockBasedTxMgr) GetLastSavepoint ¶
func (txmgr *LockBasedTxMgr) GetLastSavepoint() (*version.Height, error)
GetLastSavepoint返回在保存点中记录的块编号, 如果找不到保存点,则返回0
func (*LockBasedTxMgr) NewQueryExecutor ¶
func (txmgr *LockBasedTxMgr) NewQueryExecutor(txid string) (ledger.QueryExecutor, error)
newQueryExecutor在接口“txmgmt.txmgr”中实现方法
func (*LockBasedTxMgr) NewTxSimulator ¶
func (txmgr *LockBasedTxMgr) NewTxSimulator(txid string) (ledger.TxSimulator, error)
newtxSimulator在接口“txmgmt.txmgr”中实现方法
func (*LockBasedTxMgr) RemoveStaleAndCommitPvtDataOfOldBlocks ¶
func (txmgr *LockBasedTxMgr) RemoveStaleAndCommitPvtDataOfOldBlocks(blocksPvtData map[uint64][]*ledger.TxPvtData) error
RemoveStaleAndCommitPvtDataOfOldBlocks implements method in interface `txmgmt.TxMgr` 执行以下六项操作: (1)从传递的blockspvtdata构造唯一的pvt数据 (2)获取oldblockcommit上的锁 (3)通过比较[version,valuehash]检查过时的pvtdata并删除过时的数据 (4)从非过时的pvtdata创建更新批 (5)更新由清除管理器管理的BTL记账,并更新过期密钥。 (6)将未过时的pvt数据提交到statedb 此函数假定传递的输入仅包含 标记为“有效”。在当前的设计中,当我们存储 缺少有关仅有效事务的数据信息。此外,八卦只提供 缺少有效事务的pvtdata。如果这两个假设由于某些错误而被破坏, 从数据一致性的角度来看,我们仍然是安全的,因为我们匹配版本和 值哈希在提交值之前存储在statedb中。但是,如果 a tuple <ns, Coll, key> is passed for two (or more) transactions with one as valid and 另一个是无效事务,如果 无效Tx的版本大于有效Tx(根据我们在 构造唯一的pvtData()。除了bug之外,还有另一种情况 函数可能会同时接收有效和无效Tx的pvtData。这样的情况将得到解释。 在FAB-12924中,与状态叉和重建分类帐状态相关。
func (*LockBasedTxMgr) Rollback ¶
func (txmgr *LockBasedTxMgr) Rollback()
rollback在接口“txmgmt.txmgr”中实现方法
func (*LockBasedTxMgr) ShouldRecover ¶
func (txmgr *LockBasedTxMgr) ShouldRecover(lastAvailableBlock uint64) (bool, uint64, error)
shouldRecover在接口kvledger.recoverer中实现方法
func (*LockBasedTxMgr) Shutdown ¶
func (txmgr *LockBasedTxMgr) Shutdown()
shutdown在接口“txmgmt.txmgr”中实现方法
func (*LockBasedTxMgr) ValidateAndPrepare ¶
func (txmgr *LockBasedTxMgr) ValidateAndPrepare(blockAndPvtdata *ledger.BlockAndPvtData, doMVCCValidation bool) ( []*txmgr.TxStatInfo, error, )
validateAndPrepare在接口“txmgmt.txmgr”中实现方法