From 5d9551f29f19f1d1f9a31342d9b80b4bebf7b25e Mon Sep 17 00:00:00 2001 From: zhangduo Date: Wed, 6 Apr 2016 17:01:55 +0800 Subject: [PATCH] Make multi WAL work with WALs other than FSHLog --- .../hadoop/hbase/wal/RegionGroupingProvider.java | 134 +++++++++------------ .../org/apache/hadoop/hbase/wal/WALFactory.java | 30 +++-- .../TestReplicationEndpointWithMultipleWAL.java | 2 + ...ationKillMasterRSCompressedWithMultipleWAL.java | 2 + .../TestReplicationSyncUpToolWithMultipleWAL.java | 2 + .../wal/TestBoundedRegionGroupingStrategy.java | 1 - 6 files changed, 83 insertions(+), 88 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/RegionGroupingProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/RegionGroupingProvider.java index 0aeaccf..a725989 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/RegionGroupingProvider.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/RegionGroupingProvider.java @@ -23,29 +23,26 @@ import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIM import java.io.IOException; import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.locks.Lock; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.hbase.HConstants; -import org.apache.hadoop.hbase.regionserver.wal.FSHLog; -import org.apache.hadoop.hbase.regionserver.wal.MetricsWAL; - +import org.apache.hadoop.hbase.classification.InterfaceAudience; // imports for classes still in regionserver.wal import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener; import org.apache.hadoop.hbase.util.Bytes; -import org.apache.hadoop.hbase.util.FSUtils; +import org.apache.hadoop.hbase.util.IdReadWriteLock; /** * A WAL Provider that returns a WAL per group of regions. * + * This provider follows the decorator pattern and mainly holds the logic for WAL grouping. + * WAL creation/roll/close is delegated to {@link #DELEGATE_PROVIDER} + * * Region grouping is handled via {@link RegionGroupingStrategy} and can be configured via the * property "hbase.wal.regiongrouping.strategy". Current strategy choices are *