You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sn...@apache.org on 2015/11/09 12:46:53 UTC
cassandra git commit: jacoco instrumentation breaks UDF validation
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.2 59a32211a -> b5b1252ce
jacoco instrumentation breaks UDF validation
patch by Russ Hatch; reviewed by Robert Stupp for CASSANDRA-10672
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b5b1252c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b5b1252c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b5b1252c
Branch: refs/heads/cassandra-2.2
Commit: b5b1252ce1d2f81a51801a1b62bcf0b86fdf7238
Parents: 59a3221
Author: Russ Hatch <rh...@datastax.com>
Authored: Mon Nov 9 12:43:59 2015 +0100
Committer: Robert Stupp <sn...@snazy.de>
Committed: Mon Nov 9 12:43:59 2015 +0100
----------------------------------------------------------------------
.../cassandra/cql3/functions/JavaSourceUDFFactory.java | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/b5b1252c/src/java/org/apache/cassandra/cql3/functions/JavaSourceUDFFactory.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/functions/JavaSourceUDFFactory.java b/src/java/org/apache/cassandra/cql3/functions/JavaSourceUDFFactory.java
index c40e031..515c947 100644
--- a/src/java/org/apache/cassandra/cql3/functions/JavaSourceUDFFactory.java
+++ b/src/java/org/apache/cassandra/cql3/functions/JavaSourceUDFFactory.java
@@ -24,6 +24,7 @@ import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -222,7 +223,17 @@ public final class JavaSourceUDFFactory
Class cls = targetClassLoader.loadClass(targetClassName);
- if (cls.getDeclaredMethods().length != 2 || cls.getDeclaredConstructors().length != 1)
+ // Count only non-synthetic methods, so code coverage instrumentation doesn't cause a miscount
+ int nonSyntheticMethodCount = 0;
+ for (Method m : cls.getDeclaredMethods())
+ {
+ if (!m.isSynthetic())
+ {
+ nonSyntheticMethodCount += 1;
+ }
+ }
+
+ if (nonSyntheticMethodCount != 2 || cls.getDeclaredConstructors().length != 1)
throw new InvalidRequestException("Check your source to not define additional Java methods or constructors");
MethodType methodType = MethodType.methodType(void.class)
.appendParameterTypes(FunctionName.class, List.class, List.class, DataType[].class,