Tar*_*ara 0 hyperledger-fabric hyperledger-composer
我曾经收到 MVCC_READ_CONFLICT 错误并知道这意味着什么,但最近我将其升级到企业版并开始收到 PHANTOM_READ_CONFLICT 错误,PHANTOM_READ_CONFLICT 是什么意思?尝试用谷歌搜索但找不到任何有关它的信息。
另外它与 MVCC_READ_CONFLICT 有什么不同,我知道如何处理 MVCC_READ_CONFLICT 但不知道如何处理 PHANTOM_READ_CONFLICT 因为我不知道它意味着什么。
幻读是指您的链代码中有范围查询,并且在提交时 - 范围查询会重新运行,并且结果与链代码执行期间的结果不同。
想象一下,您执行范围查询,然后计算元素数量并将结果写入键“count”。可能是在链代码执行之后和提交之前 - 有人插入了一个新元素。如果在提交期间没有范围查询重新验证 - 事务将写入错误的计数值。
来自官方文档:
此附加验证应确保在查询信息中捕获的结果的超级范围(即范围的并集)中没有插入/删除/更新键。换句话说,如果我们在提交状态验证期间重新执行任何范围查询(模拟期间执行的事务),它应该产生与模拟时事务观察到的相同结果。此检查可确保如果事务在提交期间观察到幻像项,则应将该事务标记为无效。请注意,此幻象保护仅限于范围查询(即链代码中的 GetStateByRange 函数),尚未针对其他查询(即链代码中的 GetQueryResult 函数)实现。其他查询存在幻象风险,因此只能在未提交排序的只读事务中使用,除非应用程序可以保证模拟和验证/提交时间之间结果集的稳定性。
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |