Repository: cassandra Updated Branches: refs/heads/trunk 9e8741f28 -> 9f83e6a23
UFPureScriptTest.testJavascriptTupleType fails on uninitialized thread id patch by Ariel Weisberg; reviewed by Robert Stupp for CASSANDRA-10019 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/622e8a3e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/622e8a3e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/622e8a3e Branch: refs/heads/trunk Commit: 622e8a3e908350f56399a011ae80c8a9ba5b06bb Parents: 213aab8 Author: Ariel Weisberg <[email protected]> Authored: Tue Aug 11 10:41:45 2015 +0200 Committer: Robert Stupp <[email protected]> Committed: Tue Aug 11 10:41:45 2015 +0200 ---------------------------------------------------------------------- .../org/apache/cassandra/cql3/functions/UDFunction.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/622e8a3e/src/java/org/apache/cassandra/cql3/functions/UDFunction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java index 249e083..12b1f93 100644 --- a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java +++ b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -35,12 +36,14 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import com.google.common.base.Objects; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.datastax.driver.core.DataType; import com.datastax.driver.core.ProtocolVersion; import com.datastax.driver.core.UserType; + import org.apache.cassandra.config.Config; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.config.Schema; @@ -295,7 +298,7 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct throw new InvalidRequestException("Scripted user-defined functions are disabled in cassandra.yaml - set enable_scripted_user_defined_functions=true to enable if you are aware of the security risks"); } - private static final class ThreadIdAndCpuTime + private static final class ThreadIdAndCpuTime extends CompletableFuture<Object> { long threadId; long cpuTime; @@ -318,6 +321,7 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct { this.threadId = Thread.currentThread().getId(); this.cpuTime = threadMXBean.getCurrentThreadCpuTime(); + complete(null); } } @@ -366,6 +370,9 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct // retry a last time with the difference of UDF-fail-timeout to consumed CPU time (just in case execution hit a badly timed GC) try { + //The threadIdAndCpuTime shouldn't take a long time to be set so this should return immediately + threadIdAndCpuTime.get(1, TimeUnit.SECONDS); + long cpuTimeMillis = threadMXBean.getThreadCpuTime(threadIdAndCpuTime.threadId) - threadIdAndCpuTime.cpuTime; cpuTimeMillis /= 1000000L;
