cita链使用docker-compose部署,关闭后就不能正常出块

在使用docker-compose 部署cita链,部署后就不能正常出块,就卡在最近的块高处。使用的是老版本v0.19.1,使用新版本也是这样的问题。

这里有几个问题,我想先理一下:

  1. 是之前用了 v0.19.1 的版本启动链,产生了一些块;
  2. 然后再用 docker-compose 启动链,使用相同的数据,不出块,对吗?
  3. 发现 2 不出块后,采用 v0.22.0 版本,使用相同的数据,也不出块,对吗?

我也遇到过这样的问题,docker-compose down docker-compose up -d node0, 分别单独启动。

1赞

是使用的同一个cita版本,只是在关闭cita链,docker-compose down后,在启动USER_ID=id -u $USER docker-compose up -d 不能正常出块。
在使用新版本时,我是将旧版本镜像以及数据全清了,重新下载的。
我感觉是有一定几率能启动成功。尝试了10几次有一次能启动成功并稳定出块

@rink1969, 志伟有空的时候可以帮忙看一下这个问题啊。

这个问题可以尝试以下办法解决:

  1. 域名解析时存在 bug, 会导致在某些场景下节点连接不成功,见 https://github.com/cryptape/cita/issues/250 描述。需要使用 v0.22.0 版本解决。
  2. 使用 docker compose 时,是不会删除节点配置的 ..pid文件的,这个会导致有些微服务启动不了。解决方法,需要手工删除一下其中的..pid文件。如:
$ ls cita_secp256k1_sha3_node0/test-chain/0/ -a
.   address    chain.toml      .cita-bft.pid    .cita-executor.pid  .cita-jsonrpc.pid  consensus.toml  .env           forever_mock.toml  genesis.json  logs          privkey
..  auth.toml  .cita-auth.pid  .cita-chain.pid  .cita-forever.pid   .cita-network.pid  data            executor.toml  forever.toml       jsonrpc.toml  network.toml

备注,以上两个问题的出现都有一定的随机性,当出现问题时,可以参考解决。

是需要将所有节点的.pid文件都删除?

是的。需要将所有节点的*.pid都删除。

另外在关闭cita node时,不需要使用docker-compose down 将容器都移除,
只需要将容器停止docker-compose stop,停止的同时删除所有节点的.pid文件 rm cita_secp256k1_sha3_nodeN/test-chain/N/.cita-*.pid 重新启动 docker-compose start

@sumingk @sunfjun

各位,CITA 软件的 bug 报告 需要去 https://github.com/cryptape/cita/issues 提交,开发者们的关注会比较高,也比较方便引用一些代码或issue的链接,PS,报告时并记得带上当时使用的软件版本号,和运行环境信息。

他已经提交issue了。

我是巡场机器人。