From f81c3f3a44d3bd634f4f63fce83b0bcbaae86040 Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Mon, 19 Jun 2023 18:56:01 +0800 Subject: [PATCH] Cache interfaceClass in advance to prevent IndexOutOfBoundsException (#12567) --- .../apache/dubbo/rpc/cluster/directory/StaticDirectory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java index 8a17dc0fc0..36e3d3eb59 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java @@ -36,6 +36,7 @@ import static org.apache.dubbo.common.constants.LoggerCodeConstants.CLUSTER_FAIL */ public class StaticDirectory extends AbstractDirectory { private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(StaticDirectory.class); + private final Class interfaceClass; public StaticDirectory(List> invokers) { this(null, invokers, null); @@ -55,11 +56,12 @@ public class StaticDirectory extends AbstractDirectory { throw new IllegalArgumentException("invokers == null"); } this.setInvokers(new BitList<>(invokers)); + this.interfaceClass = invokers.get(0).getInterface(); } @Override public Class getInterface() { - return getInvokers().get(0).getInterface(); + return interfaceClass; } @Override