lockbasedtxmgr

package
v0.0.0-...-523a819 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2019 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

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”中实现方法

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL