Introduce `needReport` for `ResourceLeakDetector`. (#9910)

Motivation:

We can extend `ResourceLeakDetector` through `ResourceLeakDetectorFactory`, and then report the leaked information by covering `reportTracedLeak` and `reportUntracedLeak`. However, the behavior of `reportTracedLeak` and `reportUntracedLeak` is controlled by `logger.isErrorEnabled()`, which is not reasonable. In the case of extending `ResourceLeakDetector`, we sometimes need `needReport` to always return true instead of relying on `logger.isErrorEnabled ()`.

Modification:

introduce `needReport` method and let it be `protected`

Result:

We can control the report leak behavior.
This commit is contained in:
时无两丶 2020-01-10 12:21:24 +08:00 committed by Norman Maurer
parent 8334f2ce92
commit 6158c40f45
1 changed files with 11 additions and 1 deletions

View File

@ -256,8 +256,18 @@ public class ResourceLeakDetector<T> {
}
}
/**
* When the return value is {@code true}, {@link #reportTracedLeak} and {@link #reportUntracedLeak}
* will be called once a leak is detected, otherwise not.
*
* @return {@code true} to enable leak reporting.
*/
protected boolean needReport() {
return logger.isErrorEnabled();
}
private void reportLeak() {
if (!logger.isErrorEnabled()) {
if (!needReport()) {
clearRefQueue();
return;
}