You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ra...@apache.org on 2014/12/26 05:15:17 UTC

phoenix git commit: PHOENIX-1536 Make use of SplitTransaction to split local index region from 0.98.9 onwards(Rajeshbabu)

Repository: phoenix
Updated Branches:
  refs/heads/master d36986192 -> d41565b7f


PHOENIX-1536 Make use of SplitTransaction to split local index region from 0.98.9 onwards(Rajeshbabu)


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

Branch: refs/heads/master
Commit: d41565b7f145a4c6a81f462fd248281137d266b4
Parents: d369861
Author: Rajeshbabu Chintaguntla <ra...@apache.org>
Authored: Fri Dec 26 09:45:04 2014 +0530
Committer: Rajeshbabu Chintaguntla <ra...@apache.org>
Committed: Fri Dec 26 09:45:04 2014 +0530

----------------------------------------------------------------------
 .../regionserver/IndexSplitTransaction.java     |  6 +++---
 .../hbase/regionserver/LocalIndexSplitter.java  | 20 ++++++++++++++++----
 .../hbase/index/IndexRegionSplitPolicy.java     |  4 ++++
 pom.xml                                         |  2 +-
 4 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/d41565b7/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java
index 18f1b0b..c18521e 100644
--- a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java
+++ b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java
@@ -89,7 +89,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
  * one thread only.
  */
 @InterfaceAudience.Private
-public class IndexSplitTransaction {
+public class IndexSplitTransaction extends SplitTransaction {
   private static final Log LOG = LogFactory.getLog(IndexSplitTransaction.class);
 
   /*
@@ -155,6 +155,7 @@ public class IndexSplitTransaction {
    * @param splitrow Row to split around
    */
   public IndexSplitTransaction(final HRegion r, final byte [] splitrow) {
+    super(r , splitrow);
     this.parent = r;
     this.splitrow = splitrow;
   }
@@ -783,8 +784,7 @@ public class IndexSplitTransaction {
             boolean top, HRegionFileSystem fs) throws IOException {
         f.closeReader(true);
         Path splitDir =
-                new Path(new Path(new Path(fs.getRegionDir(), HRegionFileSystem.REGION_SPLITS_DIR),
-                        hri.getEncodedName()), familyName);
+                new Path(fs.getSplitsDir(hri), familyName);
         // A reference to the bottom half of the hsf store file.
         Reference r =
                 top ? Reference.createTopReference(splitRow) : Reference

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d41565b7/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexSplitter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexSplitter.java b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexSplitter.java
index 713fa59..15e5ec8 100644
--- a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexSplitter.java
+++ b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexSplitter.java
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
 import org.apache.hadoop.hbase.coprocessor.ObserverContext;
 import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.util.PairOfSameType;
+import org.apache.phoenix.hbase.index.util.VersionUtil;
 import org.apache.phoenix.jdbc.PhoenixConnection;
 import org.apache.phoenix.parse.AlterIndexStatement;
 import org.apache.phoenix.parse.ParseNodeFactory;
@@ -51,9 +52,11 @@ public class LocalIndexSplitter extends BaseRegionObserver {
 
     private static final Log LOG = LogFactory.getLog(LocalIndexSplitter.class);
 
-    private IndexSplitTransaction st = null;
+    private SplitTransaction st = null;
     private PairOfSameType<HRegion> daughterRegions = null;
     private static final ParseNodeFactory FACTORY = new ParseNodeFactory();
+    private static final int SPLIT_TXN_MINIMUM_SUPPORTED_VERSION = VersionUtil
+            .encodeVersion("0.98.9");
 
     @Override
     public void preSplitBeforePONR(ObserverContext<RegionCoprocessorEnvironment> ctx,
@@ -71,7 +74,16 @@ public class LocalIndexSplitter extends BaseRegionObserver {
             HRegion indexRegion = IndexUtil.getIndexRegion(environment);
             if (indexRegion == null) return;
             try {
-                st = new IndexSplitTransaction(indexRegion, splitKey);
+                int encodedVersion = VersionUtil.encodeVersion(environment.getHBaseVersion());
+                if(encodedVersion >= SPLIT_TXN_MINIMUM_SUPPORTED_VERSION) {
+                    st = new SplitTransaction(indexRegion, splitKey);
+                    st.useZKForAssignment =
+                            environment.getConfiguration().getBoolean("hbase.assignment.usezk",
+                                true);
+                } else {
+                    st = new IndexSplitTransaction(indexRegion, splitKey);
+                }
+
                 if (!st.prepare()) {
                     LOG.error("Prepare for the table " + indexRegion.getTableDesc().getNameAsString()
                         + " failed. So returning null. ");
@@ -98,6 +110,7 @@ public class LocalIndexSplitter extends BaseRegionObserver {
                 metaEntries.add(putB);
             } catch (Exception e) {
                 ctx.bypass();
+                LOG.warn("index region splitting failed with the exception ", e);
                 if (st != null){
                     st.rollback(rss, rss);
                     st = null;
@@ -157,8 +170,7 @@ public class LocalIndexSplitter extends BaseRegionObserver {
             }
         } catch (Exception e) {
             if (st != null) {
-                LOG.error("Error while rolling back the split failure for index region "
-                    + st.getParent(), e);
+                LOG.error("Error while rolling back the split failure for index region", e);
             }
             rs.abort("Abort; we got an error during rollback of index");
         }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d41565b7/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionSplitPolicy.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionSplitPolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionSplitPolicy.java
index 0ee27e2..8604784 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionSplitPolicy.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionSplitPolicy.java
@@ -29,4 +29,8 @@ public class IndexRegionSplitPolicy extends RegionSplitPolicy {
         return false;
     }
 
+    protected boolean skipStoreFileRangeCheck() {
+        return true;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/d41565b7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 72ef4f9..ae4182b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,7 +74,7 @@
     <test.output.tofile>true</test.output.tofile>
 
     <!-- Hadoop Versions -->
-    <hbase.version>0.98.4-hadoop2</hbase.version>
+    <hbase.version>0.98.9-hadoop2</hbase.version>
     <hadoop-two.version>2.2.0</hadoop-two.version>
 
     <!-- Dependency versions -->