Allow adjusting of lead detection sampling interval. (#8568)
Motivation: We should allow adjustment of the leak detecting sampling interval when in SAMPLE mode. Modifications: Added new int property io.netty.leakDetection.samplingInterval Result: Be able to consume changes made by the user.
This commit is contained in:
parent
abc8a08c96
commit
63dc1f5aaa
@ -48,7 +48,12 @@ public class ResourceLeakDetector<T> {
|
|||||||
private static final String PROP_TARGET_RECORDS = "io.netty.leakDetection.targetRecords";
|
private static final String PROP_TARGET_RECORDS = "io.netty.leakDetection.targetRecords";
|
||||||
private static final int DEFAULT_TARGET_RECORDS = 4;
|
private static final int DEFAULT_TARGET_RECORDS = 4;
|
||||||
|
|
||||||
|
private static final String PROP_SAMPLING_INTERVAL = "io.netty.leakDetection.samplingInterval";
|
||||||
|
// There is a minor performance benefit in TLR if this is a power of 2.
|
||||||
|
private static final int DEFAULT_SAMPLING_INTERVAL = 128;
|
||||||
|
|
||||||
private static final int TARGET_RECORDS;
|
private static final int TARGET_RECORDS;
|
||||||
|
static final int SAMPLING_INTERVAL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the level of resource leak detection.
|
* Represents the level of resource leak detection.
|
||||||
@ -117,6 +122,7 @@ public class ResourceLeakDetector<T> {
|
|||||||
Level level = Level.parseLevel(levelStr);
|
Level level = Level.parseLevel(levelStr);
|
||||||
|
|
||||||
TARGET_RECORDS = SystemPropertyUtil.getInt(PROP_TARGET_RECORDS, DEFAULT_TARGET_RECORDS);
|
TARGET_RECORDS = SystemPropertyUtil.getInt(PROP_TARGET_RECORDS, DEFAULT_TARGET_RECORDS);
|
||||||
|
SAMPLING_INTERVAL = SystemPropertyUtil.getInt(PROP_SAMPLING_INTERVAL, DEFAULT_SAMPLING_INTERVAL);
|
||||||
|
|
||||||
ResourceLeakDetector.level = level;
|
ResourceLeakDetector.level = level;
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
@ -125,9 +131,6 @@ public class ResourceLeakDetector<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is a minor performance benefit in TLR if this is a power of 2.
|
|
||||||
static final int DEFAULT_SAMPLING_INTERVAL = 128;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link #setLevel(Level)} instead.
|
* @deprecated Use {@link #setLevel(Level)} instead.
|
||||||
*/
|
*/
|
||||||
|
@ -62,7 +62,7 @@ public abstract class ResourceLeakDetectorFactory {
|
|||||||
* @return a new instance of {@link ResourceLeakDetector}
|
* @return a new instance of {@link ResourceLeakDetector}
|
||||||
*/
|
*/
|
||||||
public final <T> ResourceLeakDetector<T> newResourceLeakDetector(Class<T> resource) {
|
public final <T> ResourceLeakDetector<T> newResourceLeakDetector(Class<T> resource) {
|
||||||
return newResourceLeakDetector(resource, ResourceLeakDetector.DEFAULT_SAMPLING_INTERVAL);
|
return newResourceLeakDetector(resource, ResourceLeakDetector.SAMPLING_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,7 +90,7 @@ public abstract class ResourceLeakDetectorFactory {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public <T> ResourceLeakDetector<T> newResourceLeakDetector(Class<T> resource, int samplingInterval) {
|
public <T> ResourceLeakDetector<T> newResourceLeakDetector(Class<T> resource, int samplingInterval) {
|
||||||
return newResourceLeakDetector(resource, ResourceLeakDetector.DEFAULT_SAMPLING_INTERVAL, Long.MAX_VALUE);
|
return newResourceLeakDetector(resource, ResourceLeakDetector.SAMPLING_INTERVAL, Long.MAX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user