diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 5dda768..76d962b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1883,6 +1883,11 @@ public class HRegionServer extends HasThread implements private static final byte[] UNSPECIFIED_REGION = new byte[]{}; @Override + public List getWALs() throws IOException { + return walFactory.getWALs(); + } + + @Override public WAL getWAL(HRegionInfo regionInfo) throws IOException { WAL wal; LogRoller roller = walRoller; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java index 993b072..787409a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.regionserver; import java.io.IOException; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentMap; @@ -55,6 +56,10 @@ public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegi * default (common) WAL */ WAL getWAL(HRegionInfo regionInfo) throws IOException; + /** @return the List of WALs that are used by this server + */ + List getWALs() throws IOException; + /** * @return Implementation of {@link CompactionRequestor} or null. */ diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java index b618a0f..4b355d3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DefaultWALProvider.java @@ -22,6 +22,8 @@ import java.io.Closeable; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; @@ -120,6 +122,16 @@ public class DefaultWALProvider implements WALProvider { } @Override + public List getWALs() throws IOException { + if (log == null) { + return Collections.emptyList(); + } + List wals = new ArrayList(); + wals.add(log); + return wals; + } + + @Override public WAL getWAL(final byte[] identifier, byte[] namespace) throws IOException { if (log == null) { // only lock when need to create wal, and need to lock since diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DisabledWALProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DisabledWALProvider.java index 1816238..868ee91 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DisabledWALProvider.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/DisabledWALProvider.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hbase.wal; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; @@ -66,6 +67,13 @@ class DisabledWALProvider implements WALProvider { } @Override + public List getWALs() throws IOException { + List wals = new ArrayList(); + wals.add(disabled); + return wals; + } + + @Override public WAL getWAL(final byte[] identifier, byte[] namespace) throws IOException { return disabled; } 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 a725989..b853c5b 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 @@ -22,6 +22,7 @@ import static org.apache.hadoop.hbase.wal.DefaultWALProvider.META_WAL_PROVIDER_I import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER; import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -168,6 +169,15 @@ public class RegionGroupingProvider implements WALProvider { } } + @Override + public List getWALs() throws IOException { + List wals = new ArrayList(); + for (WALProvider provider : cached.values()) { + wals.addAll(provider.getWALs()); + } + return wals; + } + private WAL getWAL(final String group) throws IOException { WALProvider provider = cached.get(group); if (provider == null) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java index cf704ba..5452742 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java @@ -232,6 +232,10 @@ public class WALFactory { } } + public List getWALs() throws IOException { + return provider.getWALs(); + } + /** * @param identifier may not be null, contents will not be altered * @param namespace could be null, and will use default namespace if null diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALProvider.java index b3d8674..57ffd6b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALProvider.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALProvider.java @@ -59,6 +59,10 @@ public interface WALProvider { */ WAL getWAL(final byte[] identifier, byte[] namespace) throws IOException; + /** @return the List of WALs that are used by this server + */ + List getWALs() throws IOException; + /** * persist outstanding WALs to storage and stop accepting new appends. * This method serves as shorthand for sending a sync to every WAL provided by a given diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/MockRegionServerServices.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/MockRegionServerServices.java index fa22eea..c2af0da 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/MockRegionServerServices.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/MockRegionServerServices.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase; import java.io.IOException; import java.net.InetSocketAddress; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -243,6 +244,11 @@ public class MockRegionServerServices implements RegionServerServices { } @Override + public List getWALs() throws IOException { + return Collections.emptyList(); + } + + @Override public WAL getWAL(HRegionInfo regionInfo) throws IOException { return null; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java index 74dd7d4..bfb9ae5 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.master; import java.io.IOException; import java.net.InetSocketAddress; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -561,8 +562,12 @@ ClientProtos.ClientService.BlockingInterface, RegionServerServices { } @Override + public List getWALs() throws IOException { + return Collections.emptyList(); + } + + @Override public WAL getWAL(HRegionInfo regionInfo) throws IOException { - // TODO Auto-generated method stub return null; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/IOTestProvider.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/IOTestProvider.java index 6b1ca03..d27939d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/IOTestProvider.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/IOTestProvider.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.wal; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -108,6 +109,13 @@ public class IOTestProvider implements WALProvider { } @Override + public List getWALs() throws IOException { + List wals = new ArrayList(); + wals.add(log); + return wals; + } + + @Override public WAL getWAL(final byte[] identifier, byte[] namespace) throws IOException { return log; }