Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D329E200B81 for ; Tue, 30 Aug 2016 03:57:48 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D1AD5160AB8; Tue, 30 Aug 2016 01:57:48 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 02766160ACF for ; Tue, 30 Aug 2016 03:57:47 +0200 (CEST) Received: (qmail 89960 invoked by uid 500); 30 Aug 2016 01:57:47 -0000 Mailing-List: contact blur-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: blur-dev@incubator.apache.org Delivered-To: mailing list blur-commits@incubator.apache.org Received: (qmail 89629 invoked by uid 99); 30 Aug 2016 01:57:47 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Aug 2016 01:57:47 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id EC4F4E0BDC; Tue, 30 Aug 2016 01:57:46 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: amccurry@apache.org To: blur-commits@incubator.apache.org Date: Tue, 30 Aug 2016 01:57:56 -0000 Message-Id: <3d1285aaaada42ba9ddef2a9e7b06d9c@git.apache.org> In-Reply-To: <427a1393cdb64f64a0347c3008659bf1@git.apache.org> References: <427a1393cdb64f64a0347c3008659bf1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [11/13] git commit: Removing thread local variables. archived-at: Tue, 30 Aug 2016 01:57:49 -0000 http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-thrift/src/main/java/org/apache/blur/thrift/BlurClientManager.java ---------------------------------------------------------------------- diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/BlurClientManager.java b/blur-thrift/src/main/java/org/apache/blur/thrift/BlurClientManager.java index 8c0e9ba..766cc59 100644 --- a/blur-thrift/src/main/java/org/apache/blur/thrift/BlurClientManager.java +++ b/blur-thrift/src/main/java/org/apache/blur/thrift/BlurClientManager.java @@ -50,6 +50,7 @@ import org.apache.blur.trace.Trace; import org.apache.blur.trace.Trace.TraceId; import org.apache.blur.trace.Tracer; import org.apache.blur.user.UserContext; +import org.apache.blur.utils.ThreadValue; public class BlurClientManager { @@ -141,7 +142,7 @@ public class BlurClientManager { List shuffledConnections = new ArrayList(); } - private static ThreadLocal _random = new ThreadLocal() { + private static ThreadValue _random = new ThreadValue() { @Override protected Random initialValue() { return new Random(); http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-thrift/src/main/java/org/apache/blur/thrift/sasl/TSaslTransport.java ---------------------------------------------------------------------- diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/sasl/TSaslTransport.java b/blur-thrift/src/main/java/org/apache/blur/thrift/sasl/TSaslTransport.java index 3cf80a4..15361f0 100644 --- a/blur-thrift/src/main/java/org/apache/blur/thrift/sasl/TSaslTransport.java +++ b/blur-thrift/src/main/java/org/apache/blur/thrift/sasl/TSaslTransport.java @@ -38,6 +38,7 @@ import org.apache.blur.thirdparty.thrift_0_9_0.transport.TMemoryInputTransport; import org.apache.blur.thirdparty.thrift_0_9_0.transport.TSocket; import org.apache.blur.thirdparty.thrift_0_9_0.transport.TTransport; import org.apache.blur.thirdparty.thrift_0_9_0.transport.TTransportException; +import org.apache.blur.utils.ThreadValue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -311,7 +312,7 @@ abstract class TSaslTransport extends TTransport { _currentConnection.set(null); } - static ThreadLocal _currentConnection = new ThreadLocal(); + static ThreadValue _currentConnection = new ThreadValue(); private void setupConnectionInfo() { if (underlyingTransport instanceof TSocket) { http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-util/src/main/java/org/apache/blur/trace/Trace.java ---------------------------------------------------------------------- diff --git a/blur-util/src/main/java/org/apache/blur/trace/Trace.java b/blur-util/src/main/java/org/apache/blur/trace/Trace.java index 65c2bfa..8f4bbce 100644 --- a/blur-util/src/main/java/org/apache/blur/trace/Trace.java +++ b/blur-util/src/main/java/org/apache/blur/trace/Trace.java @@ -27,6 +27,7 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import org.apache.blur.utils.ThreadValue; import org.json.JSONException; import org.json.JSONObject; @@ -77,10 +78,10 @@ public class Trace { } }; - private static ThreadLocal _tracer = new ThreadLocal(); + private static ThreadValue _tracer = new ThreadValue(); private static TraceStorage _storage; private static String _nodeName; - private static ThreadLocal _random = new ThreadLocal() { + private static ThreadValue _random = new ThreadValue() { @Override protected Random initialValue() { return new Random(); http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-util/src/main/java/org/apache/blur/user/UserContext.java ---------------------------------------------------------------------- diff --git a/blur-util/src/main/java/org/apache/blur/user/UserContext.java b/blur-util/src/main/java/org/apache/blur/user/UserContext.java index 6ae373b..1b4fb1a 100644 --- a/blur-util/src/main/java/org/apache/blur/user/UserContext.java +++ b/blur-util/src/main/java/org/apache/blur/user/UserContext.java @@ -19,6 +19,8 @@ package org.apache.blur.user; import java.util.HashMap; import java.util.Map; +import org.apache.blur.utils.ThreadValue; + public class UserContext { private static User _defaultUser; @@ -45,7 +47,7 @@ public class UserContext { return new User(user.getUsername(), null); } - private static ThreadLocal _user = new ThreadLocal() { + private static ThreadValue _user = new ThreadValue() { @Override protected User initialValue() { return getDefaultUser(); http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-util/src/main/java/org/apache/blur/utils/ThreadValue.java ---------------------------------------------------------------------- diff --git a/blur-util/src/main/java/org/apache/blur/utils/ThreadValue.java b/blur-util/src/main/java/org/apache/blur/utils/ThreadValue.java new file mode 100644 index 0000000..80c59b6 --- /dev/null +++ b/blur-util/src/main/java/org/apache/blur/utils/ThreadValue.java @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the =License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.blur.utils; + +import java.util.concurrent.ConcurrentMap; + +import com.google.common.collect.MapMaker; + +public class ThreadValue { + + static class Value { + T value; + + Value(T value) { + this.value = value; + } + } + + private final ConcurrentMap> refs = new MapMaker().weakKeys().makeMap(); + + protected T initialValue() { + return null; + } + + public T get() { + Value value = refs.get(Thread.currentThread()); + if (value == null) { + refs.put(Thread.currentThread(), value = new Value<>(initialValue())); + } + return value.value; + } + + public void set(T v) { + Value value = refs.get(Thread.currentThread()); + if (value == null) { + refs.put(Thread.currentThread(), value = new Value<>(v)); + } else { + value.value = v; + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/991fb043/blur-util/src/test/java/org/apache/blur/utils/BlurConstantsTest.java ---------------------------------------------------------------------- diff --git a/blur-util/src/test/java/org/apache/blur/utils/BlurConstantsTest.java b/blur-util/src/test/java/org/apache/blur/utils/BlurConstantsTest.java index 25b5967..139afb2 100644 --- a/blur-util/src/test/java/org/apache/blur/utils/BlurConstantsTest.java +++ b/blur-util/src/test/java/org/apache/blur/utils/BlurConstantsTest.java @@ -43,7 +43,7 @@ public class BlurConstantsTest { "DELETE_MARKER_VALUE", "DELETE_MARKER", "BLUR_ZOOKEEPER_TIMEOUT_DEFAULT", "BLUR_THRIFT_DEFAULT_MAX_FRAME_SIZE", "ZK_WAIT_TIME", "ACL_DISCOVER", "ACL_READ", "FAST_DECOMPRESSION", "FAST", "HIGH_COMPRESSION", "DEFAULT_VALUE", "OFF_HEAP", "DEFAULT", "BLUR_CLUSTER", "BLUR_NODENAME", "BLUR_HTTP_STATUS_RUNNING_PORT", - "BLUR_STREAM_SERVER_RUNNING_PORT", "SHARED_MERGE_SCHEDULER_PREFIX")); + "BLUR_STREAM_SERVER_RUNNING_PORT", "SHARED_MERGE_SCHEDULER_PREFIX", "UPDATE_ROW", "NEW_ROW", "INTERNAL")); _emptyDefaultProperties = new HashSet(); _emptyDefaultProperties.addAll(Arrays.asList("BLUR_HDFS_TRACE_PATH", "BLUR_SHARD_HOSTNAME", "BLUR_SHARD_BLOCK_CACHE_TOTAL_SIZE", "BLUR_CONTROLLER_HOSTNAME", "BLUR_SHARD_READ_INTERCEPTOR",