DefaultPromise make MAX_STACK_DEPTH configurable
Motivation: Some Netty use cases may want to configure the max allowed stack depth for promise listener notification. Modifications: - Add a system property so that this value can be configured. Result: DefaultPromise's max stack depth is configurable.
This commit is contained in:
parent
df41be6fc8
commit
857ad73676
@ -19,6 +19,7 @@ import io.netty.util.Signal;
|
|||||||
import io.netty.util.internal.InternalThreadLocalMap;
|
import io.netty.util.internal.InternalThreadLocalMap;
|
||||||
import io.netty.util.internal.PlatformDependent;
|
import io.netty.util.internal.PlatformDependent;
|
||||||
import io.netty.util.internal.StringUtil;
|
import io.netty.util.internal.StringUtil;
|
||||||
|
import io.netty.util.internal.SystemPropertyUtil;
|
||||||
import io.netty.util.internal.ThrowableUtil;
|
import io.netty.util.internal.ThrowableUtil;
|
||||||
import io.netty.util.internal.logging.InternalLogger;
|
import io.netty.util.internal.logging.InternalLogger;
|
||||||
import io.netty.util.internal.logging.InternalLoggerFactory;
|
import io.netty.util.internal.logging.InternalLoggerFactory;
|
||||||
@ -34,7 +35,8 @@ public class DefaultPromise<V> extends AbstractFuture<V> implements Promise<V> {
|
|||||||
private static final InternalLogger logger = InternalLoggerFactory.getInstance(DefaultPromise.class);
|
private static final InternalLogger logger = InternalLoggerFactory.getInstance(DefaultPromise.class);
|
||||||
private static final InternalLogger rejectedExecutionLogger =
|
private static final InternalLogger rejectedExecutionLogger =
|
||||||
InternalLoggerFactory.getInstance(DefaultPromise.class.getName() + ".rejectedExecution");
|
InternalLoggerFactory.getInstance(DefaultPromise.class.getName() + ".rejectedExecution");
|
||||||
private static final int MAX_LISTENER_STACK_DEPTH = 8;
|
private static final int MAX_LISTENER_STACK_DEPTH = Math.min(8,
|
||||||
|
SystemPropertyUtil.getInt("io.netty.defaultPromise.maxListenerStackDepth", 8));
|
||||||
@SuppressWarnings("rawtypes")
|
@SuppressWarnings("rawtypes")
|
||||||
private static final AtomicReferenceFieldUpdater<DefaultPromise, Object> RESULT_UPDATER;
|
private static final AtomicReferenceFieldUpdater<DefaultPromise, Object> RESULT_UPDATER;
|
||||||
private static final Signal SUCCESS = Signal.valueOf(DefaultPromise.class, "SUCCESS");
|
private static final Signal SUCCESS = Signal.valueOf(DefaultPromise.class, "SUCCESS");
|
||||||
|
Loading…
Reference in New Issue
Block a user