Skip to content

watch命令所监控的方法,如果是被并发调用,watch的输出混乱 #3101

@1170300722

Description

@1170300722
  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

  • arthas-boot.jar 或者 as.sh 的版本: 4.1.3
  • Arthas 版本: 4.1.3
  • 操作系统版本: xxx
  • 目标进程的JVM版本: 11.0.20.20-AJDKfp1+0-Alibaba
  • 执行arthas-boot的版本: xxx

重现问题的步骤

  1. watch com.alibaba.lakecache.client.LakeCacheClient sendRequest '{params[0]}' -n 10

期望的结果

监控该方法10次调用,期望结果是串行输出指定函数的10次调用情况

实际运行的结果

已知指定函数会被并发调用。
实际结果是调用情况混杂在一起,输出结果不成结构。
一旦-x参数大于1,控制台输出更是混乱不堪
Image

我理解正确的输出格式应该是以下格式重复10次。
method=xx location=AtExit
ts=xxxxx; [cost=xxxms] result=@Arraylist[
@MasterGetFileInfoRequest[com.alibaba.lakecache.client.message.master.MasterGetFileInfoRequest@527e1997],
]
但实际输出如图,比较混乱

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions