From a95e15fb8dc86e4303e90af27f9df1afad1760e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AD=A3=E9=98=B3?= Date: Fri, 22 Feb 2019 23:44:22 +0800 Subject: [PATCH] Fix ArrayIndexOutOfBoundsException (#2284) * Fix ArrayIndexOutOfBoundsException when intercepting net.spy.memcached.MemcachedClient.getStats() * revert format --- .../spymemcached/v2/MemcachedMethodInterceptor.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java index 94aa8d95e..81e9fe168 100644 --- a/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spymemcached-2.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spymemcached/v2/MemcachedMethodInterceptor.java @@ -41,7 +41,15 @@ public class MemcachedMethodInterceptor implements InstanceMethodsAroundIntercep span.setComponent(ComponentsDefine.SPYMEMCACHED); Tags.DB_TYPE.set(span, ComponentsDefine.SPYMEMCACHED.getName()); SpanLayer.asCache(span); - Tags.DB_STATEMENT.set(span, method.getName() + " " + allArguments[0]); + Tags.DB_STATEMENT.set(span, getStatement(method, allArguments)); + } + + private String getStatement(Method method, Object[] allArguments) { + if (allArguments != null && allArguments.length > 0) { + return method.getName() + ' ' + allArguments[0]; + } else { + return method.getName(); + } } @Override