`fatal error: concurrent map writes ` caused by node reconfiguration and restart under stress testing
【问题分类】
- bug
- P2P网络相关(包含libp2p,liquid)
- 链账户身份与权限相关(证书问题、public、多签投票问题)
- 核心交易引擎相关(交易池、DAG)
- 共识相关
- 智能合约相关
- 存储相关
- SDK相关
- 长安链CMC工具
- 长安链管理台
- 长安链浏览器
- 长安链合约IDE
- 长安链web签名插件
- 跨链相关
- 轻节点相关
- 隐私计算相关
- 密码学相关
- 环境依赖
- 其他补充:
【问题描述】(请对问题进行描述,方便定位问题)
Deploy the Solidity contract and perform stress testing (frequent calls to the respective functions). During the stress test, to adjust configurations, the node needs to restart repeatedly. Five or six minutes after the node restarts, a panic occurs, and the following error log is showed as below.
The root cause appears to be concurrent writes to a map at /root/go/pkg/mod/chainmaker.org/chainmaker/logger/v2@v2.3.4/logger.go:483
. This map is defined at line 57 of /root/go/pkg/mod/chainmaker.org/chainmaker/logger/v2@v2.3.4/logger.go
, where loggerLevels
is created using a non-thread-safe map. During stress testing, EVM logs may be created, and when the node creates other logs simultaneously, a read-write conflict occurs, causing a panic. It is recommended to replace this with a thread-safe map to avoid the issue.
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.3.4]
- OS & version * : ubuntu-22.04.3-live-server-amd64, Linux version 5.15.0-119-generic