alibaba / alibaba/one-java-agent

在 addTransformer 时,不设置 canRetransform 为 true,会有一部分类不经过 ClassFileTransformer 处理

Offen
#35 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
579
Forks
128
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

正常来说,一个普通的 java agent,如果是以 `-javaagent:` 方式启动,注册 ClassFileTransformer 之后,后续加载的类都会经过注册的 ClassFileTransformer 处理。

但实际发现,有部分类并不会被处理。只有注册时设置`canRetransform`为true时,才会被处理。

比如这个类:`org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory` 。

```
Instrumentation#addTransformer(ClassFileTransformer transformer, boolean canRetransform);
```

记录一下现象。

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduzieren Sie das für org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory beschriebene Verhalten mithilfe eines mit -javaagent: gestarteten Java-Agenten. Beginnen Sie mit dem Vergleich von Instrumentation#addTransformer(ClassFileTransformer, boolean) mit der Registrierung, bei der canRetransform auf true gesetzt ist. Als erledigt gilt die Aufgabe, wenn der beobachtete Unterschied erklärt ist und die betroffene Klasse konsistent behandelt wird, mit einem Regressionstest, falls das Repository eine geeignete Teststelle bietet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.