alibaba / alibaba/arthas

watch 业务类toString()方法概率也会watch到arthas自身ObjectView中renderObject的toString方法,造成递归

Open
#3,083 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
37.5k
Forks
7.6k
Avg merge
1d 22h
Merged PRs (30d)
4

Description

- [x] 我已经在 [issues](https://github.com/alibaba/arthas/issues) 里搜索,没有重复的issue。

### 环境信息

* `arthas-boot.jar` 或者 `as.sh` 的版本: 4.0.5
* Arthas 版本: 4.0.5
* 操作系统版本: windows
* 目标进程的JVM版本: 8
* 执行`arthas-boot`的版本: 4.0.5

### 重现问题的步骤

1. watch com.fubukiss.rikky.dto.DishDto toString '{target}' -n 5 -x 1
2.

Image

3. 输出值的过程中调用了业务类的toString方法,又会被watch到,进而又会输出值,又会被watch到,所以会递归。

### 期望的结果
希望arthas排除掉调用toString方法,或者调用时能够被过滤掉。

### 实际运行的结果

Image

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue with the documented watch command against a Java 8 target and observe the recursive output. Start by tracing ObjectView.renderObject and the watch result-rendering path mentioned in the report. Done means business toString() output no longer recursively triggers the same watch, with coverage for the reported case.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.