交易经过多次交易后失败的策略

问题描述 投票:0回答:1

使用基于基本资产的链代码运行织物测试网络。

使用Java SDK提交一批资产。一切都很好,直到我提交了约75,000件交易。此时,每个插入物都会开始发生以下例外。但是,它确实似乎成功地添加了资产。

org.hyperledger.fabric.gateway.ContractException: Commit strategy failed

看,看着合同的张开,每个同行的提案响应似乎都使ChainCoderespSestatus设置为成功,并且确实是有效载荷响应的哈希相匹配的。似乎没有任何例外表明出现问题了(除了存在异常本身之外)。
使用SDK重新启动Java应用程序的A似乎可以解决此问题,直到插入75K左右。同行(或实际上链码容器)的日志中没有错误。如果我将调试输出添加到CC,则不会生成不良输出。
    

客户端的提交流中的步骤是:

hyperledger-fabric hyperledger-chaincode
1个回答
2
投票
确认订购者的交易。

列出来从同行中进行块事件,并通过每个块查找提交的交易ID。

    块事件的处理方式取决于选择哪种提交策略,但默认行为是:
  1. 如果从任何同行中都观察到不成功的验证代码,则交易失败的验证验证验证验证验证,则未更新分类帐,并且您会得到一个例外来表明这一点。
  2. 如果在所有组织同行接收结果之前达到了超时期(成功的验证或连接失败),则会发生timeOutException。
  3. 一旦已收到成功的交易验证代码,否则所有组织同行都发生了连接故障:
如果至少观察到一个成功的验证代码,您就很好。

如果与所有同行的块事件连接失败而没有观察到交易,则会得到“提交策略失败”消息。

  • 因此,在成功认可交易并将其发送给订单器后,收到此消息,但是与所有同行失败的块事件连接,客户不知道交易是否成功。它可能成功地承诺。它可能失败了。它可能根本没有犯过。
  • 块eventing连接
  • should should thould重试并重新建立了连接,但是我看到了某些情况下,网络路径中的某些原因是出于某种原因是黑色式流量。由于在经过一定数量的交易之后,这似乎对您始终如一,因此客户中可能存在某个问题会随着时间的流逝而导致故障,例如内存泄漏。值得进行一些调查。 一般而言,如果您确实在此不确定状态下进行交易,则可以再次向订购者重新提交交易,直到您可以观察到提交状态并确定交易是否是成功或失败。使用相同的交易ID很重要,因为它避免了双重根本的可能性,因为如果以前成功或失败的交易ID,面料将在验证时间拒绝交易。
    • 检查系统的时钟。 我在ubuntu上使用
    • sudo timedatectl set-ntp off sudo timedatectl set-ntp on
    您的应用程序和同行之间的时间差距可能会导致此

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.