From 36011901437b38581138b03fe637f2dc0f8b899b Mon Sep 17 00:00:00 2001 From: Nicholas Titcombe Date: Thu, 21 May 2020 12:43:35 -0700 Subject: [PATCH] netty: use getOrCreate() for new instances of ChannelLogger AttributeKey. (#7048) --- .../java/io/grpc/netty/NettyClientTransport.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/netty/src/main/java/io/grpc/netty/NettyClientTransport.java b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java index bd00da98384..7c009340a4f 100644 --- a/netty/src/main/java/io/grpc/netty/NettyClientTransport.java +++ b/netty/src/main/java/io/grpc/netty/NettyClientTransport.java @@ -68,7 +68,20 @@ * A Netty-based {@link ConnectionClientTransport} implementation. */ class NettyClientTransport implements ConnectionClientTransport { - static final AttributeKey LOGGER_KEY = AttributeKey.newInstance("channelLogger"); + + /** + * Get the existing {@link ChannelLogger} key in case a separate, isolated class loader has + * already created {@link LOGGER_KEY}. + */ + private static final AttributeKey getOrCreateChannelLogger() { + AttributeKey key = AttributeKey.valueOf("channelLogger"); + if (key == null) { + key = AttributeKey.newInstance("channelLogger"); + } + return key; + } + + static final AttributeKey LOGGER_KEY = getOrCreateChannelLogger(); private final InternalLogId logId; private final Map, ?> channelOptions;