我有一個概念性問題。我正在對Composer REST執行異步請求,並且收到消息:'error trying invoke chaincode. Error: Peer has rejected transaction \'552b42fa4d2cfd366ff1b7d01371878f53f7553b44f141187c6db86b75f68906\' with cdoe MVCC_READ_CONFLICT',
。使用node-sdk時遇到同樣的問題。這是什麼原因?不應該有可能異步提交多個事務嗎?MVCC_READ_CONFLICT同時提交多個交易
1
A
回答
3
Hyperledger Fabric使用無鎖樂觀併發性,在發生髒讀/寫情況時使用回滾。您需要儘可能避免重大沖突,並且可能需要在客戶端編寫重試邏輯。
的BatchTimeout設置織物可以用來在整個費用減少等待時間(儘量減少衝突的機會):
https://github.com/hyperledger/fabric/blob/release/sampleconfig/configtx.yaml#L144
1
當您提交事務時,對產生的讀取和寫入組。當事務提交到分類帳時,將使用該讀/寫集。它包含要讀取/寫入的變量的名稱及其讀取的版本。如果在設置創建和提交之間的時間段內提交了不同的事務並更改了變量的版本,原始事務將在提交時被拒絕,因爲當讀取的版本不是當前版本時。
爲了解決這個問題,您將不得不創建數據和事務結構,以避免同時編輯相同的密鑰。
https://github.com/hyperledger/fabric-samples/tree/release/high-throughput
相關問題
- 1. 交易提交?
- 2. 交易和提交
- 3. 開始交易...提交交易問題
- 4. TransactedReceiveScope - 交易提交何時完成?
- 5. Kotlin Exposed未提交交易
- 6. mysql提交和交易
- 7. 提交一個更新,交易
- 8. 許多交易在同一個表中
- 9. Git:同時提交多個分支
- 10. 交易多DataContexts
- 11. 在交易期間提交多個連接
- 12. @交易多重更新;每提交一個查詢
- 13. Sql Server總結多個交易完成的單個交易ID
- 14. 交易操作同時與非交易操作混合
- 15. 春季聲明式交易不起作用(交易未提交)
- 16. 是什麼意思開放式交易和提交交易
- 17. 下線比特幣交易ID,鏈多個脫機交易
- 18. 提交時提交
- 19. Netflix策展人:提交交易
- 20. Wildfly - deltaspike - 交易沒有提交?
- 21. SAP BAPI交易未從WCF提交
- 22. 可靠的字典和交易提交
- 23. 鎖表直到交易提交
- 24. 春季交易沒有提交
- 25. 片段交易沒有提交
- 26. 提交的交易電子郵件
- 27. PDO交易提交而不是回滾
- 28. TSQL交易 - 提交和回滾
- 29. 使用Play Framework提交交易
- 30. aiopg/psycopg2自動提交和交易
你說的避免鍵衝突的意思是:一個樣品的方式做,這是織物樣品在這裏提供的?我在一個循環(增量)中生成我自己的自定義資產密鑰,但當我嘗試提交它們時仍然出現此錯誤... –
如果您有多個線程同時更新給定密鑰,那麼您將會遇到MVCC讀取衝突問題,因爲那裏沒有全局鎖定來防止同時更新密鑰。在提交時檢查密鑰的版本號 - 如果它與先前讀取的版本號不同,則事務回滾(因爲先前的讀取現在是髒的)。 –
你如何建議測試這個錯誤代碼?返回的錯誤對象沒有error.code的值(未定義)。 error.message和error.stack被正確填充。檢查composer-connector-hlfv1/lib/hlfconnection.js中的錯誤處理函數表明,作曲者傳遞的錯誤消息中沒有任何錯誤代碼。 –