锯齿-删除待处理的交易

时间:2020-07-31 11:18:58

标签: hyperledger-sawtooth

我们经常遇到自定义TransactionProcessor的问题,当TP崩溃或无法连接到锯齿节点时,我们会收到QUEUE_FULL错误,然后所有事务都进入PENDING状态,包括intkey / settings。

是否有一种方法可以删除PENDING事务并清理队列或任何可以清理队列中批次/事务的cli。

1 个答案:

答案 0 :(得分:0)

当共识引擎发出呼叫时,超级账本锯齿验证器将按照交易到达的顺序尝试执行交易。问题是讨论2个不同的功能,很乐意为您提供进一步的帮助。

功能1:事务处理器崩溃的解决方案。当共识引擎要求验证器构建一个块时,预计事务处理器将在队列中执行事务。如果由于某种原因,事务处理器无法处理该消息,验证者仍然无法得知其结果。因此,只要可以安排执行程序,验证程序就将其保持在待处理状态。取消排队的正确方法是执行它。如果有效,则将其放在一个块中;如果无效,则将其从队列中删除。

解决方案:检查事务处理器崩溃的原因。这是您拥有的代码。验证器期望以下响应之一-交易有效,交易无效,无法评估交易且需要重试。

功能2:有意从队列中删除挂起的批处理,而无需告知Hyperledger Sawtooth。暂挂队列在内存中,而不保存在磁盘上。因此,疯狂的解决方案是重新启动验证器节点的特定实例。 注意:在某些情况下,由于选择了部署模型,因此可能无法实现。在执行此操作之前,请确保您的网络和部署能够处理节点重新启动方案。如果TP在一个节点而不是全部节点上崩溃,可能会造成严重后果。其效果将使此特定的验证程序发送错误的结果以达成共识,并且根据共识算法和网络规模,对该错误的处理可能会有所不同。但是,干净的解决方案是重新启动事务处理器。

希望这个答案有帮助!快乐的区块链..