From 6875d96629e2c03c79c2e9c60b13e543e9548451 Mon Sep 17 00:00:00 2001 From: stack Date: Fri, 7 Aug 2020 09:34:41 -0700 Subject: [PATCH] HBASE-24830 Some tests involving RS crash fail with NullPointerException after HBASE-24632 in branch-2 --- .../hbase/regionserver/SplitLogWorker.java | 3 ++- .../apache/hadoop/hbase/wal/WALSplitter.java | 2 -- .../regionserver/TestReplicationSource.java | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java index 864b3955725b..ba2c2b49e263 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java @@ -104,7 +104,8 @@ static Status splitLog(String filename, CancelableProgressable p, Configuration // encountered a bad non-retry-able persistent error. try { SplitLogWorkerCoordination splitLogWorkerCoordination = - server.getCoordinatedStateManager().getSplitLogWorkerCoordination(); + server.getCoordinatedStateManager() == null ? null + : server.getCoordinatedStateManager().getSplitLogWorkerCoordination(); if (!WALSplitter.splitLogFile(walDir, fs.getFileStatus(new Path(walDir, filename)), fs, conf, p, sequenceIdChecker, splitLogWorkerCoordination, factory, server)) { return Status.PREEMPTED; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java index 657eb2212189..0e10842bf5f6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java @@ -197,8 +197,6 @@ public static boolean splitLogFile(Path walDir, FileStatus logfile, FileSystem w Configuration conf, CancelableProgressable reporter, LastSequenceId idChecker, SplitLogWorkerCoordination splitLogWorkerCoordination, WALFactory factory, RegionServerServices rsServices) throws IOException { - Preconditions.checkNotNull(splitLogWorkerCoordination, - "Can't be null; needed to propagate WAL corruption if any found"); Path rootDir = CommonFSUtils.getRootDir(conf); FileSystem rootFS = rootDir.getFileSystem(conf); WALSplitter splitter = new WALSplitter(factory, conf, walDir, walFS, rootDir, rootFS, idChecker, diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSource.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSource.java index 6323da3e3e92..15f202f06467 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSource.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSource.java @@ -32,6 +32,9 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellBuilderFactory; +import org.apache.hadoop.hbase.CellBuilderType; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; @@ -172,13 +175,17 @@ public void testWALEntryFilter() throws IOException { TEST_UTIL.waitFor(30000, () -> rs.getWalEntryFilter() != null); WALEntryFilter wef = rs.getWalEntryFilter(); // Test non-system WAL edit. + WALEdit we = new WALEdit().add(CellBuilderFactory.create(CellBuilderType.DEEP_COPY). + setRow(HConstants.EMPTY_START_ROW). + setFamily(HConstants.CATALOG_FAMILY). + setType(Cell.Type.Put).build()); WAL.Entry e = new WAL.Entry(new WALKeyImpl(HConstants.EMPTY_BYTE_ARRAY, - TableName.valueOf("test"), -1), new WALEdit()); + TableName.valueOf("test"), -1, -1, uuid), we); assertTrue(wef.filter(e) == e); // Test system WAL edit. e = new WAL.Entry( - new WALKeyImpl(HConstants.EMPTY_BYTE_ARRAY, TableName.META_TABLE_NAME, -1), - new WALEdit()); + new WALKeyImpl(HConstants.EMPTY_BYTE_ARRAY, TableName.META_TABLE_NAME, -1, -1, uuid), + we); assertNull(wef.filter(e)); } finally { rs.terminate("Done"); @@ -383,6 +390,10 @@ protected void doStart() { protected void doStop() { notifyStopped(); } + + @Override public boolean canReplicateToSameCluster() { + return true; + } } /**