This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
     new 3baae1a405 PHOENIX-6874 Support older HBase versions with broken 
ShortCircuitConnection
3baae1a405 is described below

commit 3baae1a40569fbca3a2149c7c3982fe03c58caef
Author: Istvan Toth <st...@apache.org>
AuthorDate: Fri Feb 10 20:49:39 2023 +0100

    PHOENIX-6874 Support older HBase versions with broken ShortCircuitConnection
---
 .../src/main/java/org/apache/phoenix/util/ServerUtil.java |  3 ++-
 .../java/org/apache/phoenix/compat/hbase/CompatUtil.java  |  8 ++++++++
 .../java/org/apache/phoenix/compat/hbase/CompatUtil.java  |  8 ++++++++
 .../java/org/apache/phoenix/compat/hbase/CompatUtil.java  | 15 +++++++++++++++
 .../java/org/apache/phoenix/compat/hbase/CompatUtil.java  |  7 +++++++
 5 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java 
b/phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
index 333c849886..015c6beaf3 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
@@ -49,6 +49,7 @@ import 
org.apache.hadoop.hbase.ipc.controller.InterRegionServerIndexRpcControlle
 import org.apache.hadoop.hbase.regionserver.Region;
 import org.apache.hadoop.hbase.regionserver.Region.RowLock;
 import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.phoenix.compat.hbase.CompatUtil;
 import org.apache.phoenix.coprocessor.HashJoinCacheNotFoundException;
 import org.apache.phoenix.exception.PhoenixIOException;
 import org.apache.phoenix.exception.SQLExceptionCode;
@@ -313,7 +314,7 @@ public class ServerUtil {
                 @Override
                     public Connection apply(ConnectionType t) {
                     try {
-                        return 
env.createConnection(getTypeSpecificConfiguration(connectionType, 
env.getConfiguration()));
+                        return 
CompatUtil.createShortCircuitConnection(getTypeSpecificConfiguration(connectionType,
 env.getConfiguration()), env);
                     } catch (IOException e) {
                        throw new RuntimeException(e);
                     }
diff --git 
a/phoenix-hbase-compat-2.3.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
 
b/phoenix-hbase-compat-2.3.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
index c07353f02a..efd5e5dbd4 100644
--- 
a/phoenix-hbase-compat-2.3.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
+++ 
b/phoenix-hbase-compat-2.3.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
@@ -17,12 +17,15 @@
  */
 package org.apache.phoenix.compat.hbase;
 
+import java.io.IOException;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellComparator;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
@@ -66,4 +69,9 @@ public class CompatUtil {
         return HStore.getBytesPerChecksum(conf);
     }
 
+    public static Connection createShortCircuitConnection(final Configuration 
configuration,
+            final RegionCoprocessorEnvironment env) throws IOException {
+        //Short Circuit connections are broken before 2.4.12
+        return 
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(configuration);
+    }
 }
diff --git 
a/phoenix-hbase-compat-2.4.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
 
b/phoenix-hbase-compat-2.4.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
index bf32584603..ff0f69a0b5 100644
--- 
a/phoenix-hbase-compat-2.4.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
+++ 
b/phoenix-hbase-compat-2.4.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
@@ -17,12 +17,15 @@
  */
 package org.apache.phoenix.compat.hbase;
 
+import java.io.IOException;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellComparator;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
@@ -66,4 +69,9 @@ public class CompatUtil {
         return HStore.getBytesPerChecksum(conf);
     }
 
+    public static Connection createShortCircuitConnection(final Configuration 
configuration,
+            final RegionCoprocessorEnvironment env) throws IOException {
+        //Short Circuit connections are broken before 2.4.12
+        return 
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(configuration);
+    }
 }
diff --git 
a/phoenix-hbase-compat-2.4.1/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
 
b/phoenix-hbase-compat-2.4.1/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
index a59f19e8bb..e78738ccd8 100644
--- 
a/phoenix-hbase-compat-2.4.1/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
+++ 
b/phoenix-hbase-compat-2.4.1/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
@@ -17,18 +17,22 @@
  */
 package org.apache.phoenix.compat.hbase;
 
+import java.io.IOException;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellComparator;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
 import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;
 import org.apache.hadoop.hbase.regionserver.StoreUtils;
 import org.apache.hadoop.hbase.util.ChecksumType;
+import org.apache.hadoop.hbase.util.VersionInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,6 +42,9 @@ public class CompatUtil {
     private static final Logger LOGGER = LoggerFactory.getLogger(
         CompatUtil.class);
 
+    private static boolean hasFixedShortCircuitConnection =
+            VersionInfo.compareVersion(VersionInfo.getVersion(), "2.4.12") >= 
0;
+
     private CompatUtil() {
         //Not to be instantiated
     }
@@ -66,4 +73,12 @@ public class CompatUtil {
         return StoreUtils.getBytesPerChecksum(conf);
     }
 
+    public static Connection createShortCircuitConnection(final Configuration 
configuration,
+            final RegionCoprocessorEnvironment env) throws IOException {
+        if (hasFixedShortCircuitConnection) {
+            return env.createConnection(configuration);
+        } else {
+            return 
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(configuration);
+        }
+    }
 }
diff --git 
a/phoenix-hbase-compat-2.5.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
 
b/phoenix-hbase-compat-2.5.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
index a59f19e8bb..aa48882404 100644
--- 
a/phoenix-hbase-compat-2.5.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
+++ 
b/phoenix-hbase-compat-2.5.0/src/main/java/org/apache/phoenix/compat/hbase/CompatUtil.java
@@ -17,12 +17,15 @@
  */
 package org.apache.phoenix.compat.hbase;
 
+import java.io.IOException;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CellComparator;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
@@ -66,4 +69,8 @@ public class CompatUtil {
         return StoreUtils.getBytesPerChecksum(conf);
     }
 
+    public static Connection createShortCircuitConnection(final Configuration 
configuration,
+            final RegionCoprocessorEnvironment env) throws IOException {
+        return env.createConnection(configuration);
+    }
 }

Reply via email to