首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >corda 4:以前相互通信的节点在重新启动后即使没有修改流也不会彼此识别。

corda 4:以前相互通信的节点在重新启动后即使没有修改流也不会彼此识别。
EN

Stack Overflow用户
提问于 2021-07-08 01:39:45
回答 3查看 101关注 0票数 0

我们正在使用Corda 4和Springboot web服务器构建一个POC。

POC在本地网络中以DEV模式运行。

为POC开发的CorDapp有四个节点-

  1. Provider
  2. Consumer1 Node
  3. 2 Node
  4. 公证节点

G 211

三个节点之间的每一个交易都有三个流。以下是三种流动和状态:

  1. Flow 1: Provider Node -> Consumer 1 Node
  2. Flow 2:使用者1节点->消费者节点2节点和提供者节点
  3. 流3:使用者2节点->消费者节点1节点和提供者节点

我在2021年7月7日执行了前两次流动-

  1. Flow 1从“提供者节点”到“消费者1节点”,
  2. Flow 2从“消费者1节点”到“消费者2节点”和提供者节点。

两种流都是成功的

在流2之后,我停止了节点。

第二天,2021年7月8日,我重新启动了节点。

我启动了从“消费者2节点”到“消费者1节点和提供者节点”的流程3。

它失败了

引发

错误:“CollectSignaturesFlow的发起者必须准确地传递签署事务所需的会话。”

然后,我启动了“提供者节点”到“消费者1节点”的流程1。

它也失败了,

引发的

错误:“不知道OU=Bank,O=MyBank,L=Houston,C=U”

问题:

above?

  • Should --我每次在节点停止后重新部署节点的原因是什么?
EN

回答 3

Stack Overflow用户

发布于 2021-07-20 11:30:32

由于您使用的是PostgreqSQL数据库,所以当您执行干净部署时,clean命令不会清理postgres数据库,这与h2数据库不同。

理想情况下,在生产系统中,预计您将部署一次cordapp,当然,您可以在需要时升级您的合同、状态和流程,但是您永远不会完全清除数据库。

所以现在发生的事情是,当您第一次部署您的cordapp时,证书是由引导程序工具生成的(您可以在build/节点/PartyA/证书文件夹中找到这些证书),它们也保存在DB中。NodeInfos也保存在构建/节点/PartyA/

当您进行一个干净的生成时,build文件夹会被清除,但是数据库没有被清理,数据库会被新条目破坏,而新条目也包含新条目,并且节点与要使用的条目混淆。

因此,解决方案是,在节点上执行干净部署时,也要在数据库中删除和重新创建模式。

票数 1
EN

Stack Overflow用户

发布于 2021-07-12 16:58:55

在试图最后确定transaction.

  • not时,您的流似乎与事务的所需签名者和状态中的所需参与者不匹配,确定您所说的“重新部署”节点是什么意思,但不必每次都重新启动它们。理想情况下,您不需要重新部署或重新启动它们。

谢谢,祝你好运!

票数 0
EN

Stack Overflow用户

发布于 2021-07-19 04:19:25

我发现,在重新启动节点之前,通过重新生成节点信息(),即使在停止并启动节点之后,也能够执行所有流。

用于重新生成节点信息的命令:

代码语言:javascript
复制
java -jar corda.jar clear-network-cache
java -jar corda.jar generate-node-info

这些命令是从每个节点的“/build/ node /”文件夹中运行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68294592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档