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 23
    • Issues 23
    • 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
  • #1221

Closed
Open
Opened Oct 23, 2024 by zhen yan@sdjasj1 of 19 tasks completed1/19 tasks

bug:cmc压测命令显示结果与实际不一致

【问题分类】

  • bug
  • P2P网络相关(包含libp2p,liquid)
  • 链账户身份与权限相关(证书问题、public、多签投票问题)
  • 核心交易引擎相关(交易池、DAG)
  • 共识相关
  • 智能合约相关
  • 存储相关
  • SDK相关
  • 长安链CMC工具
  • 长安链管理台
  • 长安链浏览器
  • 长安链合约IDE
  • 长安链web签名插件
  • 跨链相关
  • 轻节点相关
  • 隐私计算相关
  • 密码学相关
  • 环境依赖
  • 其他补充:

【问题描述】(请对问题进行描述,方便定位问题)

我部署了一个简单的solidity合约.

pragma solidity ^0.4.11;

contract LedgerBalance {
    mapping(address => uint) public balances;

    function updateMyBalance(uint newBalance) public {
        balances[msg.sender] = newBalance;
    }

    function updateBalance(uint _newBalance, address _to) public {
        balances[_to] = _newBalance;
    }

    function increaseBalance(address _to) public {
        balances[_to] += 1;
    }

    function getBalance(address _from) {
        return balances[_from];
    }

    function transfer(address _to, uint256 _value) public  returns (bool success) {
        require(balances[msg.sender] >= _value);
        require(balances[_to] + _value >= balances[_to]);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
}

用cmc parallel命令对其进行压测。命令参考#1123 (closed) 具体命令如下:increaseBalance是对map中一个地址对应的int数据进行自增

./cmc parallel invoke --loopNum=10000 \
--printTime=5 \
--threadNum=128 \
--timeout=100 \
--sleepTime=100 \
--climbTime=5  \
--use-tls=true \
--showKey=false \
--contract-name=balance001 \
--method=increaseBalance \
--org-IDs=wx-org1.chainmaker.org \
--hosts="127.0.0.1:12301" \
--tls-host-names=chainmaker.org \
--user-keys=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.key \
--user-crts=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.tls.crt \
--sign-keys=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.key \
--sign-crts=./testdata/crypto-config/wx-org1.chainmaker.org/user/client1/client1.sign.crt \
--org-ids=wx-org1.chainmaker.org \
--ca-path=./testdata/crypto-config/wx-org1.chainmaker.org/ca \
--pairs="[{\"address\": \"0xa166c92f4c8118905ad984919dc683a7bdb295c1\"}]"

结果显示压测交易全部成功 image

但是实际上查询合约发现交易全部失败,数据没有被更新 image

查看节点日志发现交易的确是全部失败的 image

正常手动调用合约,交易能够被成功执行 image

因此cmc parallel命令显示的执行结果与实际不一致,cmc返回的结果应该是failCount不为0,而successCount全部为0才正确

【系统信息】(请填写系统信息,方便定位问题)

  • chainmaker-go version * : [v2.3.4]
  • OS & version * : ubuntu-22.04.3-live-server-amd64, Linux version 5.15.0-119-generic
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#1221

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