Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Sign in
issue
issue
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 20
    • Issues 20
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar

新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

  • chainmaker
  • issueissue
  • Issues
  • #9

Closed
Open
Opened Feb 08, 2022 by robin L@robinluo

【问题反馈】【搭建链】搭建环境时,生成配置文件及打包编译的脚本中存在的问题

问题描述

  • 依照文档进行本地环境的搭建,完成了基础环境的安装及配置
  • 依照步骤,执行至 ./prepare.sh 4 1、 ./build_release.sh、./cluster_quick_start.sh normal
  • 发现4个节点中,有两个节点启动失败
  • 查看异常节点node2的log,发现有类似 fail to read whiltlist file [xxxx/chainmaker-v2.1.0-wx-org2.chainmaker.org/config/wx-org3.chainmaker.org/certs/ca/wx-org4.chainmaker.org/ca.crt] 的异常日志
  • 查看异常节点node3的log,发现有类似 fail to read whiltlist file [xxxx/chainmaker-v2.1.0-wx-org3.chainmaker.org/config/wx-org2.chainmaker.org/certs/ca/wx-org4.chainmaker.org/ca.crt] 的异常日志

问题排查

经过排查,发现node2与node3的配置文件中有一些配置不正确,举例如下:

  • 端口配置不正确,node2配置文件中的端口,都配置为node3的端口了;node3的配置文件中的端口,却都配置为node2的端口了 image

  • 文件路径配置不正确,node2 与 node3 的 bc1.yml 文件中,trust_roots 中的配置信息不正确 image

问题分析

  • 分析了生成配置文件及打包相关的脚本内容,发现几个相关的脚本中都有类似这样的代码:for file in ls -tr $BUILD_CRYPTO_CONFIG_PATH,这是问题所在
  • 估计作者的意图是通过ls -tr $BUILD_CRYPTO_CONFIG_PATH这个命令获取类似这样的结果:
    • wx-org1.chainmaker.org wx-org2.chainmaker.org wx-org3.chainmaker.org wx-org4.chainmaker.org
  • 但是在我的运行环境里面,实际上返回了这样的结果:
    • wx-org2.chainmaker.org wx-org1.chainmaker.org wx-org4.chainmaker.org wx-org3.chainmaker.org
  • 正常情况下,BUILD_CRYPTO_CONFIG_PATH这个目录下面的文件是依照 1...4 的顺序生成的,生成每个目录的修改时间会有所不同,依次递增,所以不会存在问题
  • 但是在我当前的运行环境下,有些目录是在同一时间生成的(不确定是不是因为CPU运行速度快还是SSD磁盘IO速度快?),这就导致了ls -tr命令返回了意外的结果,然后脚本中假设了返回的结果是依次递增的,并未做更多的判断,所以导致了问题的发生 image

最后

  • 这应该是在比较特殊的条件下才会产生这种情况(但是巧了,我这里恒定复现,AMD Ryzen7 5800H,SAMSUNG SSD,所以generate运行的太快?)

  • 简单起见,假设配置文件目录的命名规则保持不变,那么直接ls就行,默认按照文件夹名称排序就是预期的结果 image

  • 更健壮的办法,相关的处理逻辑中加一些判断,而不是仅依赖于ls命令返回的顺序来生成配置文件

  • 另外,这些脚本写的好复杂,尤其是涉及到节点编号相关的变量以及引用... image

Edited Mar 15, 2022 by 凌风
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: chainmaker/issue#9

Copyright © 2021 ChainMaker Org. All Rights Reserved. 长安链 版权所有。