[hbase] 04/04: HBASE-26224 Introduce a MigrationStoreFileTracker to support migrating from different store file tracker implementations (#3656)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 27fd631b52fff9f76b75b0e4bacaa5f0f9aafde7
Author: Duo Zhang 
AuthorDate: Thu Sep 9 12:11:25 2021 +0800

HBASE-26224 Introduce a MigrationStoreFileTracker to support migrating from 
different store file tracker implementations (#3656)

Signed-off-by: Wellington Chevreuil 
---
 .../storefiletracker/DefaultStoreFileTracker.java  |  10 +-
 .../FileBasedStoreFileTracker.java |  15 +-
 .../MigrationStoreFileTracker.java |  88 ++
 .../storefiletracker/StoreFileListFile.java|   6 +-
 .../storefiletracker/StoreFileTrackerBase.java |  12 +-
 .../storefiletracker/StoreFileTrackerFactory.java  |  39 +++--
 .../TestMigrationStoreFileTracker.java | 193 +
 7 files changed, 343 insertions(+), 20 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
index 22e0513..a13b75b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.regionserver.storefiletracker;
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import org.apache.hadoop.conf.Configuration;
 
@@ -39,7 +40,9 @@ class DefaultStoreFileTracker extends StoreFileTrackerBase {
 
   @Override
   public List load() throws IOException {
-return 
ctx.getRegionFileSystem().getStoreFiles(ctx.getFamily().getNameAsString());
+List files =
+  
ctx.getRegionFileSystem().getStoreFiles(ctx.getFamily().getNameAsString());
+return files != null ? files : Collections.emptyList();
   }
 
   @Override
@@ -57,4 +60,9 @@ class DefaultStoreFileTracker extends StoreFileTrackerBase {
 Collection newFiles) throws IOException {
 // NOOP
   }
+
+  @Override
+  void set(List files) {
+// NOOP
+  }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
index de28b0e..c370b87 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
@@ -48,7 +48,7 @@ import 
org.apache.hadoop.hbase.shaded.protobuf.generated.StoreFileTrackerProtos.
  * storages.
  */
 @InterfaceAudience.Private
-public class FileBasedStoreFileTracker extends StoreFileTrackerBase {
+class FileBasedStoreFileTracker extends StoreFileTrackerBase {
 
   private final StoreFileListFile backedFile;
 
@@ -139,4 +139,17 @@ public class FileBasedStoreFileTracker extends 
StoreFileTrackerBase {
   }
 }
   }
+
+  @Override
+  void set(List files) throws IOException {
+synchronized (storefiles) {
+  storefiles.clear();
+  StoreFileList.Builder builder = StoreFileList.newBuilder();
+  for (StoreFileInfo info : files) {
+storefiles.put(info.getPath().getName(), info);
+builder.addStoreFile(toStoreFileEntry(info));
+  }
+  backedFile.update(builder);
+}
+  }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
new file mode 100644
index 000..e486e6d
--- /dev/null
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
@@ -0,0 +1,88 @@
+/**
+ * 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.hadoop.hbase.region

[hbase] 03/04: HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 6731430f1a0c2ecd1388a1fa8dc844e4c377d74a
Author: Wellington Ramos Chevreuil 
AuthorDate: Wed Sep 8 10:31:49 2021 +0100

HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

Signed-off-by: Duo Zhang 
---
 .../assignment/MergeTableRegionsProcedure.java |  23 +-
 .../assignment/SplitTableRegionProcedure.java  |  41 ++--
 .../hbase/regionserver/HRegionFileSystem.java  |  42 +++-
 .../storefiletracker/DefaultStoreFileTracker.java  |   4 +-
 .../storefiletracker/StoreFileTracker.java |   1 -
 .../storefiletracker/StoreFileTrackerFactory.java  |  33 ++-
 .../hbase/regionserver/TestDefaultStoreEngine.java |   1 +
 .../regionserver/TestDirectStoreSplitsMerges.java  |  32 ++-
 .../hadoop/hbase/regionserver/TestHStoreFile.java  |  19 +-
 .../regionserver/TestMergesSplitsAddToTracker.java | 262 +
 .../hbase/regionserver/TestStripeStoreEngine.java  |   1 +
 .../storefiletracker/TestStoreFileTracker.java}|  42 ++--
 12 files changed, 436 insertions(+), 65 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index fb57cb9..4b25a28 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -24,6 +24,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Stream;
+
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.MetaMutationAnnotation;
@@ -53,6 +55,8 @@ import org.apache.hadoop.hbase.quotas.QuotaExceededException;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.regionserver.HStoreFile;
 import org.apache.hadoop.hbase.regionserver.StoreFileInfo;
+import org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTracker;
+import 
org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTrackerFactory;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.wal.WALSplitUtil;
@@ -584,40 +588,47 @@ public class MergeTableRegionsProcedure
 final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();
 final Path tableDir = CommonFSUtils.getTableDir(mfs.getRootDir(), 
regionsToMerge[0].getTable());
 final FileSystem fs = mfs.getFileSystem();
-
+List mergedFiles = new ArrayList<>();
 HRegionFileSystem mergeRegionFs = 
HRegionFileSystem.createRegionOnFileSystem(
   env.getMasterConfiguration(), fs, tableDir, mergedRegion);
 
 for (RegionInfo ri: this.regionsToMerge) {
   HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(
   env.getMasterConfiguration(), fs, tableDir, ri, false);
-  mergeStoreFiles(env, regionFs, mergeRegionFs, mergedRegion);
+  mergedFiles.addAll(mergeStoreFiles(env, regionFs, mergeRegionFs, 
mergedRegion));
 }
 assert mergeRegionFs != null;
-mergeRegionFs.commitMergedRegion();
+mergeRegionFs.commitMergedRegion(mergedFiles, env);
 
 // Prepare to create merged regions
 env.getAssignmentManager().getRegionStates().
 getOrCreateRegionStateNode(mergedRegion).setState(State.MERGING_NEW);
   }
 
-  private void mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
+  private List mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
 HRegionFileSystem mergeRegionFs, RegionInfo mergedRegion) throws 
IOException {
 final TableDescriptor htd = env.getMasterServices().getTableDescriptors()
   .get(mergedRegion.getTable());
+List mergedFiles = new ArrayList<>();
 for (ColumnFamilyDescriptor hcd : htd.getColumnFamilies()) {
   String family = hcd.getNameAsString();
-  final Collection storeFiles = 
regionFs.getStoreFiles(family);
+  Configuration trackerConfig =
+
StoreFileTrackerFactory.mergeConfigurations(env.getMasterConfiguration(), htd, 
hcd);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
+family, regionFs);
+  final Collection storeFiles = tracker.load();
   if (storeFiles != null && storeFiles.size() > 0) {
 for (StoreFileInfo storeFileInfo : storeFiles) {
   // Create reference file(s) to parent region file here in mergedDir.
   // As this procedure is running on master, use CacheConfig.DISABLED 
means
   // don't cache any block.
-  mergeRegionFs.mergeStoreFi

[hbase] branch HBASE-26067 updated (b56fa39 -> 27fd631)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a change to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git.


 discard b56fa39  HBASE-26224 Introduce a MigrationStoreFileTracker to support 
migrating from different store file tracker implementations (#3656)
omit 0c8db60  HBASE-26079 Use StoreFileTracker when splitting and merging 
(#3617)
omit f642ba3  HBASE-25988 Store the store file list by a file (#3578)
omit df87f53  HBASE-26064 Introduce a StoreFileTracker to abstract the 
store file tracking logic
 add b8ba3f7  HBASE-26255 Add an option to use region location from meta 
table in TableSnapshotInputFormat (#3661)
 add 922d066  [HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)
 new 5492282  HBASE-26064 Introduce a StoreFileTracker to abstract the 
store file tracking logic
 new f3623e6  HBASE-25988 Store the store file list by a file (#3578)
 new 6731430  HBASE-26079 Use StoreFileTracker when splitting and merging 
(#3617)
 new 27fd631  HBASE-26224 Introduce a MigrationStoreFileTracker to support 
migrating from different store file tracker implementations (#3656)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (b56fa39)
\
 N -- N -- N   refs/heads/HBASE-26067 (27fd631)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../mapreduce/TableSnapshotInputFormatImpl.java| 63 +-
 .../mapreduce/TestTableSnapshotInputFormat.java| 29 ++
 .../org/apache/hadoop/hbase/util/HBaseFsck.java|  6 +--
 3 files changed, 83 insertions(+), 15 deletions(-)


[hbase] 02/04: HBASE-25988 Store the store file list by a file (#3578)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit f3623e604641469db2c33a425e15d5d08db532d4
Author: Duo Zhang 
AuthorDate: Thu Aug 26 18:51:12 2021 +0800

HBASE-25988 Store the store file list by a file (#3578)

Signed-off-by: Wellington Chevreuil 
---
 .../protobuf/server/region/StoreFileTracker.proto  |  29 +++--
 .../hadoop/hbase/regionserver/StoreContext.java|   5 +
 .../hadoop/hbase/regionserver/StoreEngine.java |   8 +-
 .../storefiletracker/DefaultStoreFileTracker.java  |   5 +-
 .../FileBasedStoreFileTracker.java | 142 +
 .../storefiletracker/StoreFileListFile.java| 142 +
 .../storefiletracker/StoreFileTrackerBase.java |  11 +-
 .../storefiletracker/StoreFileTrackerFactory.java  |  12 +-
 .../TestRegionWithFileBasedStoreFileTracker.java   | 109 
 9 files changed, 430 insertions(+), 33 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
 b/hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
similarity index 57%
copy from 
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
copy to 
hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
index 4f7231b..2a269ea 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
+++ 
b/hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
@@ -15,21 +15,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hbase.regionserver.storefiletracker;
+syntax = "proto2";
+// This file contains protocol buffers that are used for store file tracker.
+package hbase.pb;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.regionserver.StoreContext;
-import org.apache.yetus.audience.InterfaceAudience;
+option java_package = "org.apache.hadoop.hbase.shaded.protobuf.generated";
+option java_outer_classname = "StoreFileTrackerProtos";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+option optimize_for = SPEED;
 
-/**
- * Factory method for creating store file tracker.
- */
-@InterfaceAudience.Private
-public final class StoreFileTrackerFactory {
+message StoreFileEntry {
+  required string name = 1;
+  required uint64 size = 2;
+}
 
-  public static StoreFileTracker create(Configuration conf, TableName 
tableName,
-boolean isPrimaryReplica, StoreContext ctx) {
-return new DefaultStoreFileTracker(conf, tableName, isPrimaryReplica, ctx);
-  }
+message StoreFileList {
+  required uint64 timestamp = 1;
+  repeated StoreFileEntry store_file = 2;
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
index 2a9f968..588f8f4 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
@@ -22,6 +22,7 @@ import java.util.Collection;
 import java.util.function.Supplier;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.CellComparator;
+import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.io.HeapSize;
@@ -109,6 +110,10 @@ public final class StoreContext implements HeapSize {
 return coprocessorHost;
   }
 
+  public TableName getTableName() {
+return getRegionInfo().getTable();
+  }
+
   public RegionInfo getRegionInfo() {
 return regionFileSystem.getRegionInfo();
   }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
index f9d6c29..61b7dfa 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
@@ -172,9 +172,9 @@ public abstract class StoreEnginehttp://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.hadoop.hbase.regionserver.storefiletracker;
+
+import java.io.IOException;
+import ja

[hbase] 01/04: HBASE-26064 Introduce a StoreFileTracker to abstract the store file tracking logic

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 54922827d58ced259f62675cde73045426053887
Author: Duo Zhang 
AuthorDate: Thu Jul 29 18:35:19 2021 +0800

HBASE-26064 Introduce a StoreFileTracker to abstract the store file 
tracking logic

Signed-off-by: Wellington Chevreuil 
---
 .../hadoop/hbase/mob/DefaultMobStoreCompactor.java |  22 +-
 .../hadoop/hbase/mob/DefaultMobStoreFlusher.java   |   4 +-
 .../regionserver/CreateStoreFileWriterParams.java  | 134 
 .../hbase/regionserver/DateTieredStoreEngine.java  |   5 +-
 .../hbase/regionserver/DefaultStoreEngine.java |   5 +-
 .../hbase/regionserver/DefaultStoreFlusher.java|  11 +-
 .../hadoop/hbase/regionserver/HMobStore.java   |   3 +-
 .../hbase/regionserver/HRegionFileSystem.java  |  10 +-
 .../apache/hadoop/hbase/regionserver/HStore.java   | 699 +
 .../hadoop/hbase/regionserver/StoreContext.java|   9 +
 .../hadoop/hbase/regionserver/StoreEngine.java | 438 -
 .../hbase/regionserver/StoreFileManager.java   |   9 +
 .../hadoop/hbase/regionserver/StoreFlusher.java|   9 +-
 .../hadoop/hbase/regionserver/StoreUtils.java  |  36 +-
 .../hbase/regionserver/StripeStoreEngine.java  |   9 +-
 .../hbase/regionserver/StripeStoreFlusher.java |   9 +-
 .../compactions/AbstractMultiOutputCompactor.java  |   7 +-
 .../hbase/regionserver/compactions/Compactor.java  |  36 +-
 .../regionserver/compactions/DefaultCompactor.java |  16 +-
 .../storefiletracker/DefaultStoreFileTracker.java  |  61 ++
 .../storefiletracker/StoreFileTracker.java |  75 +++
 .../storefiletracker/StoreFileTrackerBase.java | 178 ++
 .../storefiletracker/StoreFileTrackerFactory.java  |  35 ++
 .../util/compaction/MajorCompactionRequest.java|   1 -
 .../org/apache/hadoop/hbase/TestIOFencing.java |  12 +-
 .../regionserver/TestCacheOnWriteInSchema.java |   6 +-
 .../hbase/regionserver/TestDefaultStoreEngine.java |   5 +-
 .../hadoop/hbase/regionserver/TestHRegion.java |   4 +-
 .../hadoop/hbase/regionserver/TestHStore.java  |  28 +-
 .../TestRegionMergeTransactionOnCluster.java   |   6 +-
 .../regionserver/TestStoreFileRefresherChore.java  |   3 +-
 .../regionserver/TestStoreScannerClosure.java  |   6 +-
 .../hbase/regionserver/TestStripeStoreEngine.java  |   2 +
 .../compactions/TestDateTieredCompactor.java   |  12 +-
 .../compactions/TestStripeCompactionPolicy.java|  12 +-
 .../compactions/TestStripeCompactor.java   |  12 +-
 36 files changed, 1224 insertions(+), 705 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
index c45fdff..01fe000 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
@@ -29,7 +29,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Optional;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
@@ -144,17 +143,16 @@ public class DefaultMobStoreCompactor extends 
DefaultCompactor {
   };
 
   private final CellSinkFactory writerFactory =
-  new CellSinkFactory() {
-@Override
-public StoreFileWriter createWriter(InternalScanner scanner,
-
org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,
-boolean shouldDropBehind, boolean major) throws IOException {
-  // make this writer with tags always because of possible new cells 
with tags.
-  return store.createWriterInTmp(fd.maxKeyCount,
-major ? majorCompactionCompression : minorCompactionCompression,
-true, true, true, shouldDropBehind);
-}
-  };
+new CellSinkFactory() {
+  @Override
+  public StoreFileWriter createWriter(InternalScanner scanner,
+org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails 
fd,
+boolean shouldDropBehind, boolean major) throws IOException {
+// make this writer with tags always because of possible new cells 
with tags.
+return store.getStoreEngine().createWriter(
+  createParams(fd, shouldDropBehind, 
major).includeMVCCReadpoint(true).includesTag(true));
+  }
+};
 
   public DefaultMobStoreCompactor(Configuration conf, HStore store) {
 super(conf, store);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java
index 480b85c..4a1dc7b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/D

[hbase] branch branch-2 updated: [HBASE-26243]Fix typo for file "hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
 new 68db7f5  [HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)
68db7f5 is described below

commit 68db7f5ed05c67d09d04035b242b959c48175623
Author: hapihu 
AuthorDate: Thu Sep 9 12:11:49 2021 +0800

[HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

Signed-off-by: Duo Zhang 
---
 .../src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index 4298831..8460998 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -1824,7 +1824,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   }
 
   /**
-   * Check consistency of all regions using mulitple threads concurrently.
+   * Check consistency of all regions using multiple threads concurrently.
*/
   private void checkRegionConsistencyConcurrently(
 final List workItems)
@@ -3564,7 +3564,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
 out.println("NOTE: Following options are NOT supported as of HBase version 
2.0+.");
 out.println("");
 out.println("  UNSUPPORTED Metadata Repair options: (expert features, use 
with caution!)");
-out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatiblity");
+out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatibility");
 out.println("   -fixAssignments   Try to fix region assignments.  Replaces 
the old -fix");
 out.println("   -fixMeta  Try to fix meta problems.  This assumes 
HDFS region info is good.");
 out.println("   -fixHdfsHoles Try to fix region holes in hdfs.");
@@ -3865,7 +3865,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   for (String arg : args) {
 if (unsupportedOptionsInV2.contains(arg)) {
   errors.reportError(ERROR_CODE.UNSUPPORTED_OPTION,
-  "option '" + arg + "' is not " + "supportted!");
+  "option '" + arg + "' is not " + "supported!");
   result = false;
   break;
 }


[hbase] branch branch-2.4 updated: [HBASE-26243]Fix typo for file "hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.4 by this push:
 new 9e04033  [HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)
9e04033 is described below

commit 9e04033ad21cbc6e240431d47780119e579faec7
Author: hapihu 
AuthorDate: Thu Sep 9 12:11:49 2021 +0800

[HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

Signed-off-by: Duo Zhang 
---
 .../src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index ba54d47..a0ee84b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -1823,7 +1823,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   }
 
   /**
-   * Check consistency of all regions using mulitple threads concurrently.
+   * Check consistency of all regions using multiple threads concurrently.
*/
   private void checkRegionConsistencyConcurrently(
 final List workItems)
@@ -3563,7 +3563,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
 out.println("NOTE: Following options are NOT supported as of HBase version 
2.0+.");
 out.println("");
 out.println("  UNSUPPORTED Metadata Repair options: (expert features, use 
with caution!)");
-out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatiblity");
+out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatibility");
 out.println("   -fixAssignments   Try to fix region assignments.  Replaces 
the old -fix");
 out.println("   -fixMeta  Try to fix meta problems.  This assumes 
HDFS region info is good.");
 out.println("   -fixHdfsHoles Try to fix region holes in hdfs.");
@@ -3864,7 +3864,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   for (String arg : args) {
 if (unsupportedOptionsInV2.contains(arg)) {
   errors.reportError(ERROR_CODE.UNSUPPORTED_OPTION,
-  "option '" + arg + "' is not " + "supportted!");
+  "option '" + arg + "' is not " + "supported!");
   result = false;
   break;
 }


[hbase] branch branch-2.3 updated: [HBASE-26243]Fix typo for file "hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.3 by this push:
 new 250906e  [HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)
250906e is described below

commit 250906e82066b79c9023f05d512d3ce9076efa87
Author: hapihu 
AuthorDate: Thu Sep 9 12:11:49 2021 +0800

[HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

Signed-off-by: Duo Zhang 
---
 .../src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index e964a23..150dcf9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -1822,7 +1822,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   }
 
   /**
-   * Check consistency of all regions using mulitple threads concurrently.
+   * Check consistency of all regions using multiple threads concurrently.
*/
   private void checkRegionConsistencyConcurrently(
 final List workItems)
@@ -3562,7 +3562,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
 out.println("NOTE: Following options are NOT supported as of HBase version 
2.0+.");
 out.println("");
 out.println("  UNSUPPORTED Metadata Repair options: (expert features, use 
with caution!)");
-out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatiblity");
+out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatibility");
 out.println("   -fixAssignments   Try to fix region assignments.  Replaces 
the old -fix");
 out.println("   -fixMeta  Try to fix meta problems.  This assumes 
HDFS region info is good.");
 out.println("   -fixHdfsHoles Try to fix region holes in hdfs.");
@@ -3863,7 +3863,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   for (String arg : args) {
 if (unsupportedOptionsInV2.contains(arg)) {
   errors.reportError(ERROR_CODE.UNSUPPORTED_OPTION,
-  "option '" + arg + "' is not " + "supportted!");
+  "option '" + arg + "' is not " + "supported!");
   result = false;
   break;
 }


[hbase] branch master updated: [HBASE-26243]Fix typo for file "hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new 922d066  [HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)
922d066 is described below

commit 922d0666a3d05f2e91fc38cb64750497564fc19d
Author: hapihu 
AuthorDate: Thu Sep 9 12:11:49 2021 +0800

[HBASE-26243]Fix typo for file 
"hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java" (#3650)

Signed-off-by: Duo Zhang 
---
 .../src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index 28f0d5e..b91d7d93 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -1820,7 +1820,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   }
 
   /**
-   * Check consistency of all regions using mulitple threads concurrently.
+   * Check consistency of all regions using multiple threads concurrently.
*/
   private void checkRegionConsistencyConcurrently(
 final List workItems)
@@ -3559,7 +3559,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
 out.println("NOTE: Following options are NOT supported as of HBase version 
2.0+.");
 out.println("");
 out.println("  UNSUPPORTED Metadata Repair options: (expert features, use 
with caution!)");
-out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatiblity");
+out.println("   -fix  Try to fix region assignments.  This is 
for backwards compatibility");
 out.println("   -fixAssignments   Try to fix region assignments.  Replaces 
the old -fix");
 out.println("   -fixMeta  Try to fix meta problems.  This assumes 
HDFS region info is good.");
 out.println("   -fixHdfsHoles Try to fix region holes in hdfs.");
@@ -3859,7 +3859,7 @@ public class HBaseFsck extends Configured implements 
Closeable {
   for (String arg : args) {
 if (unsupportedOptionsInV2.contains(arg)) {
   errors.reportError(ERROR_CODE.UNSUPPORTED_OPTION,
-  "option '" + arg + "' is not " + "supportted!");
+  "option '" + arg + "' is not " + "supported!");
   result = false;
   break;
 }


[hbase] branch HBASE-26067 updated: HBASE-26224 Introduce a MigrationStoreFileTracker to support migrating from different store file tracker implementations (#3656)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/HBASE-26067 by this push:
 new b56fa39  HBASE-26224 Introduce a MigrationStoreFileTracker to support 
migrating from different store file tracker implementations (#3656)
b56fa39 is described below

commit b56fa39a85012416ed9edfe28ef49af4ab6f3d65
Author: Duo Zhang 
AuthorDate: Thu Sep 9 12:11:25 2021 +0800

HBASE-26224 Introduce a MigrationStoreFileTracker to support migrating from 
different store file tracker implementations (#3656)

Signed-off-by: Wellington Chevreuil 
---
 .../storefiletracker/DefaultStoreFileTracker.java  |  10 +-
 .../FileBasedStoreFileTracker.java |  15 +-
 .../MigrationStoreFileTracker.java |  88 ++
 .../storefiletracker/StoreFileListFile.java|   6 +-
 .../storefiletracker/StoreFileTrackerBase.java |  12 +-
 .../storefiletracker/StoreFileTrackerFactory.java  |  39 +++--
 .../TestMigrationStoreFileTracker.java | 193 +
 7 files changed, 343 insertions(+), 20 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
index 22e0513..a13b75b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/DefaultStoreFileTracker.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.regionserver.storefiletracker;
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import org.apache.hadoop.conf.Configuration;
 
@@ -39,7 +40,9 @@ class DefaultStoreFileTracker extends StoreFileTrackerBase {
 
   @Override
   public List load() throws IOException {
-return 
ctx.getRegionFileSystem().getStoreFiles(ctx.getFamily().getNameAsString());
+List files =
+  
ctx.getRegionFileSystem().getStoreFiles(ctx.getFamily().getNameAsString());
+return files != null ? files : Collections.emptyList();
   }
 
   @Override
@@ -57,4 +60,9 @@ class DefaultStoreFileTracker extends StoreFileTrackerBase {
 Collection newFiles) throws IOException {
 // NOOP
   }
+
+  @Override
+  void set(List files) {
+// NOOP
+  }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
index de28b0e..c370b87 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/FileBasedStoreFileTracker.java
@@ -48,7 +48,7 @@ import 
org.apache.hadoop.hbase.shaded.protobuf.generated.StoreFileTrackerProtos.
  * storages.
  */
 @InterfaceAudience.Private
-public class FileBasedStoreFileTracker extends StoreFileTrackerBase {
+class FileBasedStoreFileTracker extends StoreFileTrackerBase {
 
   private final StoreFileListFile backedFile;
 
@@ -139,4 +139,17 @@ public class FileBasedStoreFileTracker extends 
StoreFileTrackerBase {
   }
 }
   }
+
+  @Override
+  void set(List files) throws IOException {
+synchronized (storefiles) {
+  storefiles.clear();
+  StoreFileList.Builder builder = StoreFileList.newBuilder();
+  for (StoreFileInfo info : files) {
+storefiles.put(info.getPath().getName(), info);
+builder.addStoreFile(toStoreFileEntry(info));
+  }
+  backedFile.update(builder);
+}
+  }
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
new file mode 100644
index 000..e486e6d
--- /dev/null
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/MigrationStoreFileTracker.java
@@ -0,0 +1,88 @@
+/**
+ * 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 distribut

[hbase-site] branch asf-site updated: INFRA-10751 Empty commit

2021-09-08 Thread git-site-role
This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
 new 733111a  INFRA-10751 Empty commit
733111a is described below

commit 733111abcff39901bc85389727416a93656f0f5b
Author: jenkins 
AuthorDate: Wed Sep 8 20:17:32 2021 +

INFRA-10751 Empty commit


[hbase] branch branch-1 updated: HBASE-26195 Abort RS if wal sync fails or times out

2021-09-08 Thread gjacoby
This is an automated email from the ASF dual-hosted git repository.

gjacoby pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-1 by this push:
 new d309276  HBASE-26195 Abort RS if wal sync fails or times out
d309276 is described below

commit d309276121fe00aa30c9b26bd0ac09214f4133d6
Author: Rushabh Shah 
AuthorDate: Wed Sep 8 15:15:56 2021 -0400

HBASE-26195 Abort RS if wal sync fails or times out
---
 .../apache/hadoop/hbase/regionserver/HRegion.java  |  95 +++---
 .../hbase/client/TestRollbackFromClient.java   | 361 -
 .../regionserver/TestFailedAppendAndSync.java  |   1 +
 .../hadoop/hbase/regionserver/TestHRegion.java |  60 +---
 .../regionserver/wal/TestFSHLogTimedOutSync.java   | 184 +++
 5 files changed, 234 insertions(+), 467 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index b74731f..3e752cd 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -3339,7 +3339,7 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
 WALEdit walEdit = null;
 MultiVersionConcurrencyControl.WriteEntry writeEntry = null;
 long txid = 0;
-boolean doRollBackMemstore = false;
+boolean walSyncSuccess = true;
 boolean locked = false;
 int cellCount = 0;
 /** Keep track of the locks we hold so we can release them in finally 
clause */
@@ -3705,7 +3705,6 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
 if (updateSeqId) {
   updateSequenceId(familyMaps[i].values(), mvccNum);
 }
-doRollBackMemstore = true; // If we have a failure, we need to clean 
what we wrote
 addedSize += applyFamilyMapToMemstore(familyMaps[i]);
   }
 
@@ -3721,11 +3720,12 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
   // -
   // STEP 7. Sync wal.
   // -
+  walSyncSuccess = false;
   if (txid != 0) {
 syncOrDefer(txid, durability);
   }
+  walSyncSuccess = true;
 
-  doRollBackMemstore = false;
   // update memstore size
   this.addAndGetGlobalMemstoreSize(addedSize);
 
@@ -3776,14 +3776,17 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
 
   success = true;
   return addedSize;
+} catch (Throwable t) {
+  // WAL sync failed. Aborting to avoid a mismatch between the memstore, 
WAL,
+  // and any replicated clusters.
+  if (!walSyncSuccess) {
+rsServices.abort("WAL sync failed, aborting to preserve WAL as source 
of truth", t);
+  }
+  // Rethrow the exception.
+  throw t;
 } finally {
-  // if the wal sync was unsuccessful, remove keys from memstore
-  if (doRollBackMemstore) {
-for (int j = 0; j < familyMaps.length; j++) {
-  for(List cells:familyMaps[j].values()) {
-rollbackMemstore(cells);
-  }
-}
+  // if the wal sync was unsuccessful, complete the mvcc
+  if (!walSyncSuccess) {
 if (writeEntry != null) mvcc.complete(writeEntry);
   } else {
 if (writeEntry != null) {
@@ -4255,33 +4258,9 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
   Store store = getStore(family);
   size += store.add(cells);
 }
-
  return size;
}
 
-  /**
-   * Remove all the keys listed in the map from the memstore. This method is
-   * called when a Put/Delete has updated memstore but subsequently fails to 
update
-   * the wal. This method is then invoked to rollback the memstore.
-   */
-  private void rollbackMemstore(List memstoreCells) {
-rollbackMemstore(null, memstoreCells);
-  }
-
-  private void rollbackMemstore(final Store defaultStore, List 
memstoreCells) {
-int kvsRolledback = 0;
-for (Cell cell : memstoreCells) {
-  Store store = defaultStore;
-  if (store == null) {
-byte[] family = CellUtil.cloneFamily(cell);
-store = getStore(family);
-  }
-  store.rollback(cell);
-  kvsRolledback++;
-}
-LOG.debug("rollbackMemstore rolled back " + kvsRolledback);
-  }
-
   @Override
   public void checkFamilies(Collection families) throws 
NoSuchColumnFamilyException {
 for (byte[] family : families) {
@@ -7964,7 +7943,7 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
 this.writeRequestsCount.increment();
 RowLock rowLock = null;
 WALKey walKey = null;
-boolean doRollBackMemstore = false;
+boolean walSyncSuccess = true;
 try {
   rowLock = getRowLockInter

[hbase] branch master updated: HBASE-26255 Add an option to use region location from meta table in TableSnapshotInputFormat (#3661)

2021-09-08 Thread huaxiangsun
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
 new b8ba3f7  HBASE-26255 Add an option to use region location from meta 
table in TableSnapshotInputFormat (#3661)
b8ba3f7 is described below

commit b8ba3f788bac747d8266b90b6966cfdb8435450f
Author: huaxiangsun 
AuthorDate: Wed Sep 8 09:46:34 2021 -0700

HBASE-26255 Add an option to use region location from meta table in 
TableSnapshotInputFormat (#3661)

Signed-off-by: Anoop Sam John 
---
 .../mapreduce/TableSnapshotInputFormatImpl.java| 63 +-
 .../mapreduce/TestTableSnapshotInputFormat.java| 29 ++
 2 files changed, 80 insertions(+), 12 deletions(-)

diff --git 
a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
 
b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
index abdd8f4..22c19be 100644
--- 
a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
+++ 
b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java
@@ -31,10 +31,14 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HDFSBlocksDistribution;
 import org.apache.hadoop.hbase.HDFSBlocksDistribution.HostAndWeight;
+import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.PrivateCellUtil;
 import org.apache.hadoop.hbase.client.ClientSideRegionScanner;
+import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.IsolationLevel;
 import org.apache.hadoop.hbase.client.RegionInfo;
+import org.apache.hadoop.hbase.client.RegionLocator;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.client.TableDescriptor;
@@ -102,6 +106,15 @@ public class TableSnapshotInputFormatImpl {
   public static final boolean SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT = 
true;
 
   /**
+   * Whether to calculate the Snapshot region location by region location from 
meta.
+   * It is much faster than computing block locations for splits.
+   */
+  public static final String  SNAPSHOT_INPUTFORMAT_LOCALITY_BY_REGION_LOCATION 
=
+"hbase.TableSnapshotInputFormat.locality.by.region.location";
+
+  public static final boolean 
SNAPSHOT_INPUTFORMAT_LOCALITY_BY_REGION_LOCATION_DEFAULT = false;
+
+  /**
* In some scenario, scan limited rows on each InputSplit for sampling data 
extraction
*/
   public static final String SNAPSHOT_INPUTFORMAT_ROW_LIMIT_PER_INPUTSPLIT =
@@ -392,17 +405,49 @@ public class TableSnapshotInputFormatImpl {
   SNAPSHOT_INPUTFORMAT_SCAN_METRICS_ENABLED_DEFAULT);
 scan.setScanMetricsEnabled(scanMetricsEnabled);
 
+boolean useRegionLoc = 
conf.getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_BY_REGION_LOCATION,
+  SNAPSHOT_INPUTFORMAT_LOCALITY_BY_REGION_LOCATION_DEFAULT);
+
+Connection connection = null;
+RegionLocator regionLocator = null;
+if (localityEnabled && useRegionLoc) {
+  Configuration newConf = new Configuration(conf);
+  newConf.setInt("hbase.hconnection.threads.max", 1);
+  try {
+connection = ConnectionFactory.createConnection(newConf);
+regionLocator = connection.getRegionLocator(htd.getTableName());
+
+/* Get all locations for the table and cache it */
+regionLocator.getAllRegionLocations();
+  } finally {
+if (connection != null) {
+  connection.close();
+}
+  }
+}
+
 List splits = new ArrayList<>();
 for (RegionInfo hri : regionManifests) {
   // load region descriptor
+  List hosts = null;
+  if (localityEnabled) {
+if (regionLocator != null) {
+  /* Get Location from the local cache */
+  HRegionLocation
+location = regionLocator.getRegionLocation(hri.getStartKey(), 
false);
+
+  hosts = new ArrayList<>(1);
+  hosts.add(location.getHostname());
+} else {
+  hosts = calculateLocationsForInputSplit(conf, htd, hri, tableDir);
+}
+  }
 
   if (numSplits > 1) {
 byte[][] sp = sa.split(hri.getStartKey(), hri.getEndKey(), numSplits, 
true);
 for (int i = 0; i < sp.length - 1; i++) {
   if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), 
scan.getStopRow(), sp[i],
   sp[i + 1])) {
-List hosts =
-calculateLocationsForInputSplit(conf, htd, hri, tableDir, 
localityEnabled);
 
 Scan boundedScan = new Scan(scan);
 if (scan.getStartRow().length == 0) {
@@ -425,8 +470,7 @@ public class TableSnapshotInputFormatImpl {
   } else {

[hbase] 02/03: HBASE-25988 Store the store file list by a file (#3578)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit f642ba3409814b0fdab34c5b971a5bea7f4b3e15
Author: Duo Zhang 
AuthorDate: Thu Aug 26 18:51:12 2021 +0800

HBASE-25988 Store the store file list by a file (#3578)

Signed-off-by: Wellington Chevreuil 
---
 .../protobuf/server/region/StoreFileTracker.proto  |  29 +++--
 .../hadoop/hbase/regionserver/StoreContext.java|   5 +
 .../hadoop/hbase/regionserver/StoreEngine.java |   8 +-
 .../storefiletracker/DefaultStoreFileTracker.java  |   5 +-
 .../FileBasedStoreFileTracker.java | 142 +
 .../storefiletracker/StoreFileListFile.java| 142 +
 .../storefiletracker/StoreFileTrackerBase.java |  11 +-
 .../storefiletracker/StoreFileTrackerFactory.java  |  12 +-
 .../TestRegionWithFileBasedStoreFileTracker.java   | 109 
 9 files changed, 430 insertions(+), 33 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
 b/hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
similarity index 57%
copy from 
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
copy to 
hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
index 4f7231b..2a269ea 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/storefiletracker/StoreFileTrackerFactory.java
+++ 
b/hbase-protocol-shaded/src/main/protobuf/server/region/StoreFileTracker.proto
@@ -15,21 +15,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hbase.regionserver.storefiletracker;
+syntax = "proto2";
+// This file contains protocol buffers that are used for store file tracker.
+package hbase.pb;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.regionserver.StoreContext;
-import org.apache.yetus.audience.InterfaceAudience;
+option java_package = "org.apache.hadoop.hbase.shaded.protobuf.generated";
+option java_outer_classname = "StoreFileTrackerProtos";
+option java_generic_services = true;
+option java_generate_equals_and_hash = true;
+option optimize_for = SPEED;
 
-/**
- * Factory method for creating store file tracker.
- */
-@InterfaceAudience.Private
-public final class StoreFileTrackerFactory {
+message StoreFileEntry {
+  required string name = 1;
+  required uint64 size = 2;
+}
 
-  public static StoreFileTracker create(Configuration conf, TableName 
tableName,
-boolean isPrimaryReplica, StoreContext ctx) {
-return new DefaultStoreFileTracker(conf, tableName, isPrimaryReplica, ctx);
-  }
+message StoreFileList {
+  required uint64 timestamp = 1;
+  repeated StoreFileEntry store_file = 2;
 }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
index 2a9f968..588f8f4 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreContext.java
@@ -22,6 +22,7 @@ import java.util.Collection;
 import java.util.function.Supplier;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.CellComparator;
+import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.io.HeapSize;
@@ -109,6 +110,10 @@ public final class StoreContext implements HeapSize {
 return coprocessorHost;
   }
 
+  public TableName getTableName() {
+return getRegionInfo().getTable();
+  }
+
   public RegionInfo getRegionInfo() {
 return regionFileSystem.getRegionInfo();
   }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
index f9d6c29..61b7dfa 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreEngine.java
@@ -172,9 +172,9 @@ public abstract class StoreEnginehttp://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.hadoop.hbase.regionserver.storefiletracker;
+
+import java.io.IOException;
+import ja

[hbase] 03/03: HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 0c8db602a946cc9fdbb12893d27eb3a2b0c23d23
Author: Wellington Ramos Chevreuil 
AuthorDate: Wed Sep 8 10:31:49 2021 +0100

HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

Signed-off-by: Duo Zhang 
---
 .../assignment/MergeTableRegionsProcedure.java |  23 +-
 .../assignment/SplitTableRegionProcedure.java  |  41 ++--
 .../hbase/regionserver/HRegionFileSystem.java  |  42 +++-
 .../storefiletracker/DefaultStoreFileTracker.java  |   4 +-
 .../storefiletracker/StoreFileTracker.java |   1 -
 .../storefiletracker/StoreFileTrackerFactory.java  |  33 ++-
 .../hbase/regionserver/TestDefaultStoreEngine.java |   1 +
 .../regionserver/TestDirectStoreSplitsMerges.java  |  32 ++-
 .../hadoop/hbase/regionserver/TestHStoreFile.java  |  19 +-
 .../regionserver/TestMergesSplitsAddToTracker.java | 262 +
 .../hbase/regionserver/TestStripeStoreEngine.java  |   1 +
 .../storefiletracker/TestStoreFileTracker.java}|  42 ++--
 12 files changed, 436 insertions(+), 65 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index fb57cb9..4b25a28 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -24,6 +24,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Stream;
+
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.MetaMutationAnnotation;
@@ -53,6 +55,8 @@ import org.apache.hadoop.hbase.quotas.QuotaExceededException;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.regionserver.HStoreFile;
 import org.apache.hadoop.hbase.regionserver.StoreFileInfo;
+import org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTracker;
+import 
org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTrackerFactory;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.wal.WALSplitUtil;
@@ -584,40 +588,47 @@ public class MergeTableRegionsProcedure
 final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();
 final Path tableDir = CommonFSUtils.getTableDir(mfs.getRootDir(), 
regionsToMerge[0].getTable());
 final FileSystem fs = mfs.getFileSystem();
-
+List mergedFiles = new ArrayList<>();
 HRegionFileSystem mergeRegionFs = 
HRegionFileSystem.createRegionOnFileSystem(
   env.getMasterConfiguration(), fs, tableDir, mergedRegion);
 
 for (RegionInfo ri: this.regionsToMerge) {
   HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(
   env.getMasterConfiguration(), fs, tableDir, ri, false);
-  mergeStoreFiles(env, regionFs, mergeRegionFs, mergedRegion);
+  mergedFiles.addAll(mergeStoreFiles(env, regionFs, mergeRegionFs, 
mergedRegion));
 }
 assert mergeRegionFs != null;
-mergeRegionFs.commitMergedRegion();
+mergeRegionFs.commitMergedRegion(mergedFiles, env);
 
 // Prepare to create merged regions
 env.getAssignmentManager().getRegionStates().
 getOrCreateRegionStateNode(mergedRegion).setState(State.MERGING_NEW);
   }
 
-  private void mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
+  private List mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
 HRegionFileSystem mergeRegionFs, RegionInfo mergedRegion) throws 
IOException {
 final TableDescriptor htd = env.getMasterServices().getTableDescriptors()
   .get(mergedRegion.getTable());
+List mergedFiles = new ArrayList<>();
 for (ColumnFamilyDescriptor hcd : htd.getColumnFamilies()) {
   String family = hcd.getNameAsString();
-  final Collection storeFiles = 
regionFs.getStoreFiles(family);
+  Configuration trackerConfig =
+
StoreFileTrackerFactory.mergeConfigurations(env.getMasterConfiguration(), htd, 
hcd);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
+family, regionFs);
+  final Collection storeFiles = tracker.load();
   if (storeFiles != null && storeFiles.size() > 0) {
 for (StoreFileInfo storeFileInfo : storeFiles) {
   // Create reference file(s) to parent region file here in mergedDir.
   // As this procedure is running on master, use CacheConfig.DISABLED 
means
   // don't cache any block.
-  mergeRegionFs.mergeStoreFi

[hbase] 01/03: HBASE-26064 Introduce a StoreFileTracker to abstract the store file tracking logic

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit df87f53771faad1a28296e2b97f3343cf9a6e968
Author: Duo Zhang 
AuthorDate: Thu Jul 29 18:35:19 2021 +0800

HBASE-26064 Introduce a StoreFileTracker to abstract the store file 
tracking logic

Signed-off-by: Wellington Chevreuil 
---
 .../hadoop/hbase/mob/DefaultMobStoreCompactor.java |  22 +-
 .../hadoop/hbase/mob/DefaultMobStoreFlusher.java   |   4 +-
 .../regionserver/CreateStoreFileWriterParams.java  | 134 
 .../hbase/regionserver/DateTieredStoreEngine.java  |   5 +-
 .../hbase/regionserver/DefaultStoreEngine.java |   5 +-
 .../hbase/regionserver/DefaultStoreFlusher.java|  11 +-
 .../hadoop/hbase/regionserver/HMobStore.java   |   3 +-
 .../hbase/regionserver/HRegionFileSystem.java  |  10 +-
 .../apache/hadoop/hbase/regionserver/HStore.java   | 699 +
 .../hadoop/hbase/regionserver/StoreContext.java|   9 +
 .../hadoop/hbase/regionserver/StoreEngine.java | 438 -
 .../hbase/regionserver/StoreFileManager.java   |   9 +
 .../hadoop/hbase/regionserver/StoreFlusher.java|   9 +-
 .../hadoop/hbase/regionserver/StoreUtils.java  |  36 +-
 .../hbase/regionserver/StripeStoreEngine.java  |   9 +-
 .../hbase/regionserver/StripeStoreFlusher.java |   9 +-
 .../compactions/AbstractMultiOutputCompactor.java  |   7 +-
 .../hbase/regionserver/compactions/Compactor.java  |  36 +-
 .../regionserver/compactions/DefaultCompactor.java |  16 +-
 .../storefiletracker/DefaultStoreFileTracker.java  |  61 ++
 .../storefiletracker/StoreFileTracker.java |  75 +++
 .../storefiletracker/StoreFileTrackerBase.java | 178 ++
 .../storefiletracker/StoreFileTrackerFactory.java  |  35 ++
 .../util/compaction/MajorCompactionRequest.java|   1 -
 .../org/apache/hadoop/hbase/TestIOFencing.java |  12 +-
 .../regionserver/TestCacheOnWriteInSchema.java |   6 +-
 .../hbase/regionserver/TestDefaultStoreEngine.java |   5 +-
 .../hadoop/hbase/regionserver/TestHRegion.java |   4 +-
 .../hadoop/hbase/regionserver/TestHStore.java  |  28 +-
 .../TestRegionMergeTransactionOnCluster.java   |   6 +-
 .../regionserver/TestStoreFileRefresherChore.java  |   3 +-
 .../regionserver/TestStoreScannerClosure.java  |   6 +-
 .../hbase/regionserver/TestStripeStoreEngine.java  |   2 +
 .../compactions/TestDateTieredCompactor.java   |  12 +-
 .../compactions/TestStripeCompactionPolicy.java|  12 +-
 .../compactions/TestStripeCompactor.java   |  12 +-
 36 files changed, 1224 insertions(+), 705 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
index c45fdff..01fe000 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreCompactor.java
@@ -29,7 +29,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Optional;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
@@ -144,17 +143,16 @@ public class DefaultMobStoreCompactor extends 
DefaultCompactor {
   };
 
   private final CellSinkFactory writerFactory =
-  new CellSinkFactory() {
-@Override
-public StoreFileWriter createWriter(InternalScanner scanner,
-
org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails fd,
-boolean shouldDropBehind, boolean major) throws IOException {
-  // make this writer with tags always because of possible new cells 
with tags.
-  return store.createWriterInTmp(fd.maxKeyCount,
-major ? majorCompactionCompression : minorCompactionCompression,
-true, true, true, shouldDropBehind);
-}
-  };
+new CellSinkFactory() {
+  @Override
+  public StoreFileWriter createWriter(InternalScanner scanner,
+org.apache.hadoop.hbase.regionserver.compactions.Compactor.FileDetails 
fd,
+boolean shouldDropBehind, boolean major) throws IOException {
+// make this writer with tags always because of possible new cells 
with tags.
+return store.getStoreEngine().createWriter(
+  createParams(fd, shouldDropBehind, 
major).includeMVCCReadpoint(true).includesTag(true));
+  }
+};
 
   public DefaultMobStoreCompactor(Configuration conf, HStore store) {
 super(conf, store);
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java
index 480b85c..4a1dc7b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/mob/D

[hbase] branch HBASE-26067 updated (ff2995c -> 0c8db60)

2021-09-08 Thread zhangduo
This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a change to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git.


 discard ff2995c  HBASE-26079 Use StoreFileTracker when splitting and merging 
(#3617)
omit 488c21e  HBASE-25988 Store the store file list by a file (#3578)
omit 1848381  HBASE-26064 Introduce a StoreFileTracker to abstract the 
store file tracking logic
 add 11b32db  HBASE-26227 Forward port HBASE-26223 test code to branch-2.4+ 
(#3632)
 add c770b1d  HBASE-26189 Reduce log level of CompactionProgress notice to 
DEBUG (#3579)
 add 7cc876d  Revert "HBASE-26189 Reduce log level of CompactionProgress 
notice to DEBUG (#3579)"
 add 07c0eee  HBASE-26189 Reduce log level of CompactionProgress notice to 
DEBUG (#3579)
 add 0098164  HBASE-26216 Move HRegionServer.abort(String) to Abortable as 
a default method (#3642)
 add c4daabd  HBASE-26232 SEEK_NEXT_USING_HINT is ignored on reversed Scans 
(#3639)
 add 889049e  HBASE-26235 We could start RegionServerTracker before 
becoming active master (#3645)
 add a0864ed  HBASE-26103 Deprecate BufferedMutatorParams#pool method 
(#3635)
 add d19728b  HBASE-25642 Fix or stop warning about already cached block 
(#3638)
 add ed56a40  HBASE-25588 Excessive logging of "hbase.zookeeper.useMulti is 
deprecated. Default to true always." (#3640)
 add 3c64f86  HBASE-26244 Avoid trim the error stack trace when running UT 
with maven (#3654)
 add 36884c3  HBASE-26210 HBase Write should be doomed to hang when cell 
size exceeds InmemoryFlushSize for CompactingMemStore (#3604)
 add 345d725  HBASE-25773 
TestSnapshotScannerHDFSAclController.setupBeforeClass is flaky (#3651)
 add f62caa5  HBASE-26205 Use specified cluster conf for UserProvider in 
TableMRUtil#initCredentialsForCluster (#3592)
 add a15e94a  HBASE-26147 Add a dry run mode to the balancer, where moves 
are calculated but not actually executed
 add f022692  HBASE-26157 Expose some IA.LimitedPrivate interface in 
TestingHBaseCluster (#3643)
 add ec747bc  HBASE-26106 AbstractFSWALProvider#getArchivedLogPath doesn't 
look for wal file in all oldWALs directory. (#3636)
 add dd293c8  HBASE-26230 Start an in process HRegionServer in maintenance 
mode (#3659)
 add afbdd41  HBASE-26237 Improve computation complexity for 
primaryRegionCountSkewCostFunction (#3657)
 add b7c6a0b  HBASE-26228 updateRSGroupConfig operation should be 
authorized by AccessController (#3633)
 add 03b6f2d  HBASE-26163 Better logging in RSGroupInfoManagerImpl (#3610)
 add fae6261  HBASE-26197 Fix some obvious bugs in MultiByteBuff.put (#3586)
 new df87f53  HBASE-26064 Introduce a StoreFileTracker to abstract the 
store file tracking logic
 new f642ba3  HBASE-25988 Store the store file list by a file (#3578)
 new 0c8db60  HBASE-26079 Use StoreFileTracker when splitting and merging 
(#3617)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (ff2995c)
\
 N -- N -- N   refs/heads/HBASE-26067 (0c8db60)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../PrimaryRegionCountSkewCostFunction.java|  10 +-
 .../java/org/apache/hadoop/hbase/Abortable.java|  10 +
 .../java/org/apache/hadoop/hbase/client/Admin.java |  40 ++-
 .../hadoop/hbase/client/AdminOverAsyncAdmin.java   |   9 +-
 .../org/apache/hadoop/hbase/client/AsyncAdmin.java |  37 ++-
 .../hadoop/hbase/client/AsyncHBaseAdmin.java   |   8 +-
 .../apache/hadoop/hbase/client/BalanceRequest.java | 114 +
 .../hadoop/hbase/client/BalanceResponse.java   | 126 ++
 .../hadoop/hbase/client/BufferedMutatorParams.java |   8 +
 .../hadoop/hbase/client/RawAsyncHBaseAdmin.java|  29 ++-
 .../hadoop/hbase/shaded/protobuf/ProtobufUtil.java |  63 +
 .../hbase/shaded/protobuf/RequestConverter.java|  10 -
 .../apache/hadoop/hbase/zookeeper/ZNodePaths.java  |   5 +
 .../org/apache/hadoop/hbase/nio/MultiByteBuff.java | 119 +++--
 .../apache/hadoop/hbase/nio/TestMultiByteBuff.java | 112 +
 .../hadoop/hbase/mapreduce/TableMapReduceUtil.java |   2 +-
 .../hadoop/hbase/mapreduce/WALInputFormat.java |   5 +-
 .../hbase/

[hbase] branch HBASE-26067 updated: HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

2021-09-08 Thread wchevreuil
This is an automated email from the ASF dual-hosted git repository.

wchevreuil pushed a commit to branch HBASE-26067
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/HBASE-26067 by this push:
 new ff2995c  HBASE-26079 Use StoreFileTracker when splitting and merging 
(#3617)
ff2995c is described below

commit ff2995cca2650380f76ea4b3ad71489847b30019
Author: Wellington Ramos Chevreuil 
AuthorDate: Wed Sep 8 10:31:49 2021 +0100

HBASE-26079 Use StoreFileTracker when splitting and merging (#3617)

Signed-off-by: Duo Zhang 
---
 .../assignment/MergeTableRegionsProcedure.java |  23 +-
 .../assignment/SplitTableRegionProcedure.java  |  41 ++--
 .../hbase/regionserver/HRegionFileSystem.java  |  42 +++-
 .../storefiletracker/DefaultStoreFileTracker.java  |   4 +-
 .../storefiletracker/StoreFileTracker.java |   1 -
 .../storefiletracker/StoreFileTrackerFactory.java  |  33 ++-
 .../hbase/regionserver/TestDefaultStoreEngine.java |   1 +
 .../regionserver/TestDirectStoreSplitsMerges.java  |  32 ++-
 .../hadoop/hbase/regionserver/TestHStoreFile.java  |  19 +-
 .../regionserver/TestMergesSplitsAddToTracker.java | 262 +
 .../hbase/regionserver/TestStripeStoreEngine.java  |   1 +
 .../storefiletracker/TestStoreFileTracker.java}|  42 ++--
 12 files changed, 436 insertions(+), 65 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
index fb57cb9..4b25a28 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java
@@ -24,6 +24,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Stream;
+
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.MetaMutationAnnotation;
@@ -53,6 +55,8 @@ import org.apache.hadoop.hbase.quotas.QuotaExceededException;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.regionserver.HStoreFile;
 import org.apache.hadoop.hbase.regionserver.StoreFileInfo;
+import org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTracker;
+import 
org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTrackerFactory;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CommonFSUtils;
 import org.apache.hadoop.hbase.wal.WALSplitUtil;
@@ -584,40 +588,47 @@ public class MergeTableRegionsProcedure
 final MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();
 final Path tableDir = CommonFSUtils.getTableDir(mfs.getRootDir(), 
regionsToMerge[0].getTable());
 final FileSystem fs = mfs.getFileSystem();
-
+List mergedFiles = new ArrayList<>();
 HRegionFileSystem mergeRegionFs = 
HRegionFileSystem.createRegionOnFileSystem(
   env.getMasterConfiguration(), fs, tableDir, mergedRegion);
 
 for (RegionInfo ri: this.regionsToMerge) {
   HRegionFileSystem regionFs = HRegionFileSystem.openRegionFromFileSystem(
   env.getMasterConfiguration(), fs, tableDir, ri, false);
-  mergeStoreFiles(env, regionFs, mergeRegionFs, mergedRegion);
+  mergedFiles.addAll(mergeStoreFiles(env, regionFs, mergeRegionFs, 
mergedRegion));
 }
 assert mergeRegionFs != null;
-mergeRegionFs.commitMergedRegion();
+mergeRegionFs.commitMergedRegion(mergedFiles, env);
 
 // Prepare to create merged regions
 env.getAssignmentManager().getRegionStates().
 getOrCreateRegionStateNode(mergedRegion).setState(State.MERGING_NEW);
   }
 
-  private void mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
+  private List mergeStoreFiles(MasterProcedureEnv env, HRegionFileSystem 
regionFs,
 HRegionFileSystem mergeRegionFs, RegionInfo mergedRegion) throws 
IOException {
 final TableDescriptor htd = env.getMasterServices().getTableDescriptors()
   .get(mergedRegion.getTable());
+List mergedFiles = new ArrayList<>();
 for (ColumnFamilyDescriptor hcd : htd.getColumnFamilies()) {
   String family = hcd.getNameAsString();
-  final Collection storeFiles = 
regionFs.getStoreFiles(family);
+  Configuration trackerConfig =
+
StoreFileTrackerFactory.mergeConfigurations(env.getMasterConfiguration(), htd, 
hcd);
+  StoreFileTracker tracker = StoreFileTrackerFactory.create(trackerConfig, 
true,
+family, regionFs);
+  final Collection storeFiles = tracker.load();
   if (storeFiles != null && storeFiles.size() > 0) {
 for (StoreFileInfo storeFileInfo : storeFiles) {
   // Create reference file(s) to paren