comnetwork commented on code in PR #5430:
URL: https://github.com/apache/hbase/pull/5430#discussion_r1335497630
##########
hbase-server/src/main/java/org/apache/hadoop/hbase/wal/AbstractWALProvider.java:
##########
@@ -36,132 +31,113 @@
import java.util.stream.Collectors;
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.Abortable;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.RegionInfo;
-import org.apache.hadoop.hbase.regionserver.wal.DualAsyncFSWAL;
+import org.apache.hadoop.hbase.regionserver.wal.AbstractFSWAL;
import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;
import org.apache.hadoop.hbase.replication.ReplicationUtils;
import org.apache.hadoop.hbase.replication.SyncReplicationState;
import org.apache.hadoop.hbase.replication.regionserver.PeerActionListener;
import
org.apache.hadoop.hbase.replication.regionserver.SyncReplicationPeerInfoProvider;
-import org.apache.hadoop.hbase.util.CommonFSUtils;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
+import org.apache.hadoop.hbase.util.IOExceptionConsumer;
+import org.apache.hadoop.hbase.util.IOExceptionRunnable;
import org.apache.hadoop.hbase.util.KeyLocker;
import org.apache.hadoop.hbase.util.Pair;
+import org.apache.hadoop.io.MultipleIOException;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.hbase.thirdparty.com.google.common.base.Throwables;
import org.apache.hbase.thirdparty.com.google.common.collect.Streams;
-import org.apache.hbase.thirdparty.io.netty.channel.Channel;
-import org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup;
/**
- * The special {@link WALProvider} for synchronous replication.
+ * Base class for a WAL Provider.
+ * <p>
+ * We will put some common logic here, especially for sync replication
implementation, as it must do
+ * some hacks before the normal wal creation operation.
* <p>
- * It works like an interceptor, when getting WAL, first it will check if the
given region should be
- * replicated synchronously, if so it will return a special WAL for it,
otherwise it will delegate
- * the request to the normal {@link WALProvider}.
+ * All {@link WALProvider} implementations should extends this class instead
of implement
+ * {@link WALProvider} directly, except {@link DisabledWALProvider}.
*/
@InterfaceAudience.Private
-public class SyncReplicationWALProvider implements WALProvider,
PeerActionListener {
-
- private static final Logger LOG =
LoggerFactory.getLogger(SyncReplicationWALProvider.class);
-
- // only for injecting errors for testcase, do not use it for other purpose.
- public static final String DUAL_WAL_IMPL = "hbase.wal.sync.impl";
-
- private final WALProvider provider;
-
- private SyncReplicationPeerInfoProvider peerInfoProvider =
- new DefaultSyncReplicationPeerInfoProvider();
-
- private WALFactory factory;
-
- private Configuration conf;
+public abstract class AbstractWALProvider implements WALProvider,
PeerActionListener {
- private List<WALActionsListener> listeners = new ArrayList<>();
+ private static final Logger LOG =
LoggerFactory.getLogger(AbstractWALProvider.class);
- private EventLoopGroup eventLoopGroup;
+ // should be package private; more visible for use in AbstractFSWAL
+ public static final String WAL_FILE_NAME_DELIMITER = ".";
- private Class<? extends Channel> channelClass;
-
- private AtomicBoolean initialized = new AtomicBoolean(false);
+ protected WALFactory factory;
+ protected Configuration conf;
+ protected List<WALActionsListener> listeners = new ArrayList<>();
+ protected String providerId;
+ protected AtomicBoolean initialized = new AtomicBoolean(false);
+ // for default wal provider, logPrefix won't change
+ protected String logPrefix;
+ protected Abortable abortable;
// when switching from A to DA, we will put a Optional.empty into this map
if there is no WAL for
// the peer yet. When getting WAL from this map the caller should know that
it should not use
// DualAsyncFSWAL any more.
Review Comment:
There is no DualAsyncFSWAL any more, so we should fix the comments?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]