You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by gr...@apache.org on 2015/09/24 12:13:13 UTC

phoenix git commit: PHOENIX-2289 Avoid Class.getClassLoader calls

Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.0 c51c9fac6 -> 2b3dedde9


PHOENIX-2289 Avoid Class.getClassLoader calls

Cache the class loader from the PhoenixContextExecutor class
to avoid relatively expensive calls to Class.getClassLoader.


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2b3dedde
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2b3dedde
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2b3dedde

Branch: refs/heads/4.x-HBase-1.0
Commit: 2b3dedde9fd4ae2a2f2abfacb13ef9bc3f71e59d
Parents: c51c9fa
Author: Gabriel Reid <ga...@ngdata.com>
Authored: Thu Sep 24 08:56:52 2015 +0200
Committer: Gabriel Reid <ga...@ngdata.com>
Committed: Thu Sep 24 12:04:25 2015 +0200

----------------------------------------------------------------------
 .../org/apache/phoenix/util/PhoenixContextExecutor.java     | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/2b3dedde/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java
index 9106a5d..2da3249 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixContextExecutor.java
@@ -36,14 +36,16 @@ import com.google.common.base.Throwables;
  */
 public class PhoenixContextExecutor {
 
+    // We cache the class loader because calls to Class.getClassLoader are relatively expensive
+    private static final ClassLoader CACHED_CLASSLOADER = PhoenixContextExecutor.class.getClassLoader();
+
     private static class CurrentContextWrapper implements CallWrapper {
         private ClassLoader saveCcl;
 
         @Override
         public void before() {
             saveCcl = Thread.currentThread().getContextClassLoader();
-            Thread.currentThread().setContextClassLoader(
-                PhoenixContextExecutor.class.getClassLoader());
+            Thread.currentThread().setContextClassLoader(CACHED_CLASSLOADER);
         }
 
         @Override
@@ -72,8 +74,7 @@ public class PhoenixContextExecutor {
     public static <T> T call(Callable<T> target) throws Exception {
         ClassLoader saveCcl = Thread.currentThread().getContextClassLoader();
         try {
-            Thread.currentThread().setContextClassLoader(
-                    PhoenixContextExecutor.class.getClassLoader());
+            Thread.currentThread().setContextClassLoader(CACHED_CLASSLOADER);
             return target.call();
         } finally {
             Thread.currentThread().setContextClassLoader(saveCcl);