This is an automated email from the ASF dual-hosted git repository. zhangduo pushed a commit to branch branch-3 in repository https://gitbox.apache.org/repos/asf/hbase.git
commit a27c317a300b3f2834fb45b58787745d55bc91bf Author: Duo Zhang <zhang...@apache.org> AuthorDate: Mon May 6 15:11:48 2024 +0800 HBASE-28480 Remove deprecated methods in RegionCoprocessorHost for 3.0.0 (#5873) Signed-off-by: Yi Mei <me...@apache.org> (cherry picked from commit 708882c6512a7b3f863ec17731bb0eba004039d1) --- .../hadoop/hbase/coprocessor/RegionObserver.java | 19 +-------- .../apache/hadoop/hbase/regionserver/HRegion.java | 13 ------ .../hadoop/hbase/regionserver/RSRpcServices.java | 20 --------- .../hbase/regionserver/RegionCoprocessorHost.java | 38 ++--------------- .../coprocessor/SampleRegionWALCoprocessor.java | 48 +++++++++------------- .../hbase/coprocessor/SimpleRegionObserver.java | 36 ---------------- .../coprocessor/TestRegionObserverInterface.java | 45 ++------------------ .../hadoop/hbase/coprocessor/TestWALObserver.java | 5 +-- 8 files changed, 30 insertions(+), 194 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java index 018826644ac..21cabcec1f8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java @@ -502,8 +502,9 @@ public interface RegionObserver { * @param byteNow - timestamp bytes * @param get - the get formed using the current cell's row. Note that the get does not * specify the family and qualifier - * @deprecated Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced with + * @deprecated Since hbase-2.0.0. No replacement. To be removed in hbase-4.0.0 and replaced with * something that doesn't expose IntefaceAudience.Private classes. + * VisibilityController still needs this, need to change the logic there first. */ @Deprecated default void prePrepareTimeStampForDeleteVersion(ObserverContext<RegionCoprocessorEnvironment> c, @@ -1403,22 +1404,6 @@ public interface RegionObserver { RegionInfo info, Path edits) throws IOException { } - /** - * Called before a {@link WALEdit} replayed for this region. - * @param ctx the environment provided by the region server - */ - default void preWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> ctx, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - } - - /** - * Called after a {@link WALEdit} replayed for this region. - * @param ctx the environment provided by the region server - */ - default void postWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> ctx, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - } - /** * Called before bulkLoadHFile. Users can create a StoreFile instance to access the contents of a * HFile. 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 ae4045b1216..c55090d3a75 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 @@ -5656,15 +5656,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi currentReplaySeqId = (key.getOrigLogSeqNum() > 0) ? key.getOrigLogSeqNum() : currentEditSeqId; - // Start coprocessor replay here. The coprocessor is for each WALEdit - // instead of a KeyValue. - if (coprocessorHost != null) { - status.setStatus("Running pre-WAL-restore hook in coprocessors"); - if (coprocessorHost.preWALRestore(this.getRegionInfo(), key, val)) { - // if bypass this wal entry, ignore it ... - continue; - } - } boolean checkRowWithinBoundary = false; // Check this edit is for this region. if ( @@ -5733,10 +5724,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi internalFlushcache(null, currentEditSeqId, stores.values(), status, false, FlushLifeCycleTracker.DUMMY); } - - if (coprocessorHost != null) { - coprocessorHost.postWALRestore(this.getRegionInfo(), key, val); - } } if (coprocessorHost != null) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index a2b9a93263d..babaa56170a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -2089,7 +2089,6 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer> ServerRegionReplicaUtil.isDefaultReplica(region.getRegionInfo()) ? region.getCoprocessorHost() : null; // do not invoke coprocessors if this is a secondary region replica - List<Pair<WALKey, WALEdit>> walEntries = new ArrayList<>(); // Skip adding the edits to WAL if this is a secondary region replica boolean isPrimary = RegionReplicaUtil.isDefaultReplica(region.getRegionInfo()); @@ -2111,18 +2110,6 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer> Pair<WALKey, WALEdit> walEntry = (coprocessorHost == null) ? null : new Pair<>(); List<MutationReplay> edits = WALSplitUtil.getMutationsFromWALEntry(entry, cells, walEntry, durability); - if (coprocessorHost != null) { - // Start coprocessor replay here. The coprocessor is for each WALEdit instead of a - // KeyValue. - if ( - coprocessorHost.preWALRestore(region.getRegionInfo(), walEntry.getFirst(), - walEntry.getSecond()) - ) { - // if bypass this log entry, ignore it ... - continue; - } - walEntries.add(walEntry); - } if (edits != null && !edits.isEmpty()) { // HBASE-17924 // sort to improve lock efficiency @@ -2145,13 +2132,6 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer> if (wal != null) { wal.sync(); } - - if (coprocessorHost != null) { - for (Pair<WALKey, WALEdit> entry : walEntries) { - coprocessorHost.postWALRestore(region.getRegionInfo(), entry.getFirst(), - entry.getSecond()); - } - } return ReplicateWALEntryResponse.newBuilder().build(); } catch (IOException ie) { throw new ServiceException(ie); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java index ef84ca31f1d..398c596b63f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java @@ -909,8 +909,9 @@ public class RegionCoprocessorHost * @param get - the get that could be used Note that the get only does not specify the family * and qualifier that should be used * @return true if default processing should be bypassed - * @deprecated In hbase-2.0.0. Will be removed in hbase-3.0.0. Added explicitly for a single - * Coprocessor for its needs only. Will be removed. + * @deprecated In hbase-2.0.0. Will be removed in hbase-4.0.0. Added explicitly for a single + * Coprocessor for its needs only. Will be removed. VisibilityController still needs + * this, need to change the logic there first. */ @Deprecated public boolean prePrepareTimeStampForDeleteVersion(final Mutation mutation, final Cell kv, @@ -1386,39 +1387,6 @@ public class RegionCoprocessorHost }); } - /** - * Supports Coprocessor 'bypass'. - * @return true if default behavior should be bypassed, false otherwise - * @deprecated Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced with - * something that doesn't expose IntefaceAudience.Private classes. - */ - @Deprecated - public boolean preWALRestore(final RegionInfo info, final WALKey logKey, final WALEdit logEdit) - throws IOException { - return execOperation( - coprocEnvironments.isEmpty() ? null : new RegionObserverOperationWithoutResult(true) { - @Override - public void call(RegionObserver observer) throws IOException { - observer.preWALRestore(this, info, logKey, logEdit); - } - }); - } - - /** - * @deprecated Since hbase-2.0.0. No replacement. To be removed in hbase-3.0.0 and replaced with - * something that doesn't expose IntefaceAudience.Private classes. - */ - @Deprecated - public void postWALRestore(final RegionInfo info, final WALKey logKey, final WALEdit logEdit) - throws IOException { - execOperation(coprocEnvironments.isEmpty() ? null : new RegionObserverOperationWithoutResult() { - @Override - public void call(RegionObserver observer) throws IOException { - observer.postWALRestore(this, info, logKey, logEdit); - } - }); - } - /** * @param familyPaths pairs of { CF, file path } submitted for bulk load */ diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.java index 65c42a8250d..17ab26c6a58 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SampleRegionWALCoprocessor.java @@ -53,10 +53,10 @@ public class SampleRegionWALCoprocessor private boolean preWALWriteCalled = false; private boolean postWALWriteCalled = false; - private boolean preWALRestoreCalled = false; - private boolean postWALRestoreCalled = false; private boolean preWALRollCalled = false; private boolean postWALRollCalled = false; + private boolean preReplayWALsCalled = false; + private boolean postReplayWALsCalled = false; /** * Set values: with a table name, a column name which will be ignored, and a column name which @@ -74,8 +74,6 @@ public class SampleRegionWALCoprocessor this.changedQualifier = chq; preWALWriteCalled = false; postWALWriteCalled = false; - preWALRestoreCalled = false; - postWALRestoreCalled = false; preWALRollCalled = false; postWALRollCalled = false; } @@ -132,15 +130,6 @@ public class SampleRegionWALCoprocessor } } - /** - * Triggered before {@link org.apache.hadoop.hbase.regionserver.HRegion} when WAL is Restoreed. - */ - @Override - public void preWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> env, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - preWALRestoreCalled = true; - } - @Override public void preWALRoll(ObserverContext<? extends WALCoprocessorEnvironment> ctx, Path oldPath, Path newPath) throws IOException { @@ -153,13 +142,16 @@ public class SampleRegionWALCoprocessor postWALRollCalled = true; } - /** - * Triggered after {@link org.apache.hadoop.hbase.regionserver.HRegion} when WAL is Restoreed. - */ @Override - public void postWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> env, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - postWALRestoreCalled = true; + public void preReplayWALs(ObserverContext<? extends RegionCoprocessorEnvironment> ctx, + RegionInfo info, Path edits) throws IOException { + preReplayWALsCalled = true; + } + + @Override + public void postReplayWALs(ObserverContext<? extends RegionCoprocessorEnvironment> ctx, + RegionInfo info, Path edits) throws IOException { + postReplayWALsCalled = true; } public boolean isPreWALWriteCalled() { @@ -170,16 +162,6 @@ public class SampleRegionWALCoprocessor return postWALWriteCalled; } - public boolean isPreWALRestoreCalled() { - LOG.debug(SampleRegionWALCoprocessor.class.getName() + ".isPreWALRestoreCalled is called."); - return preWALRestoreCalled; - } - - public boolean isPostWALRestoreCalled() { - LOG.debug(SampleRegionWALCoprocessor.class.getName() + ".isPostWALRestoreCalled is called."); - return postWALRestoreCalled; - } - public boolean isPreWALRollCalled() { return preWALRollCalled; } @@ -187,4 +169,12 @@ public class SampleRegionWALCoprocessor public boolean isPostWALRollCalled() { return postWALRollCalled; } + + public boolean isPreReplayWALsCalled() { + return preReplayWALsCalled; + } + + public boolean isPostReplayWALsCalled() { + return postReplayWALsCalled; + } } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java index be54f320ef7..62f65d6d614 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java @@ -128,8 +128,6 @@ public class SimpleRegionObserver implements RegionCoprocessor, RegionObserver { final AtomicInteger ctPostBatchMutate = new AtomicInteger(0); final AtomicInteger ctPreReplayWALs = new AtomicInteger(0); final AtomicInteger ctPostReplayWALs = new AtomicInteger(0); - final AtomicInteger ctPreWALRestore = new AtomicInteger(0); - final AtomicInteger ctPostWALRestore = new AtomicInteger(0); final AtomicInteger ctPreStoreFileReaderOpen = new AtomicInteger(0); final AtomicInteger ctPostStoreFileReaderOpen = new AtomicInteger(0); final AtomicInteger ctPostBatchMutateIndispensably = new AtomicInteger(0); @@ -683,24 +681,6 @@ public class SimpleRegionObserver implements RegionCoprocessor, RegionObserver { ctPostReplayWALs.incrementAndGet(); } - @Override - public void preWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> env, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - String tableName = logKey.getTableName().getNameAsString(); - if (tableName.equals(TABLE_SKIPPED)) { - // skip recovery of TABLE_SKIPPED for testing purpose - env.bypass(); - return; - } - ctPreWALRestore.incrementAndGet(); - } - - @Override - public void postWALRestore(ObserverContext<? extends RegionCoprocessorEnvironment> env, - RegionInfo info, WALKey logKey, WALEdit logEdit) throws IOException { - ctPostWALRestore.incrementAndGet(); - } - @Override public StoreFileReader preStoreFileReaderOpen(ObserverContext<RegionCoprocessorEnvironment> ctx, FileSystem fs, Path p, FSDataInputStreamWrapper in, long size, CacheConfig cacheConf, @@ -915,14 +895,6 @@ public class SimpleRegionObserver implements RegionCoprocessor, RegionObserver { return ctPostReplayWALs.get() > 0; } - public boolean hadPreWALRestore() { - return ctPreWALRestore.get() > 0; - } - - public boolean hadPostWALRestore() { - return ctPostWALRestore.get() > 0; - } - public boolean wasScannerNextCalled() { return ctPreScannerNext.get() > 0 && ctPostScannerNext.get() > 0; } @@ -1035,14 +1007,6 @@ public class SimpleRegionObserver implements RegionCoprocessor, RegionObserver { return ctPostReplayWALs.get(); } - public int getCtPreWALRestore() { - return ctPreWALRestore.get(); - } - - public int getCtPostWALRestore() { - return ctPostWALRestore.get(); - } - public int getCtPreWALAppend() { return ctPreWALAppend.get(); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java index 36e3ef1e0ff..3787acbbf25 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java @@ -767,9 +767,8 @@ public class TestRegionObserverInterface { tableName, new Boolean[] { false, false, true, true, true, true, false }); verifyMethodResult(SimpleRegionObserver.class, - new String[] { "getCtPreReplayWALs", "getCtPostReplayWALs", "getCtPreWALRestore", - "getCtPostWALRestore", "getCtPrePut", "getCtPostPut" }, - tableName, new Integer[] { 0, 0, 0, 0, 2, 2 }); + new String[] { "getCtPreReplayWALs", "getCtPostReplayWALs", "getCtPrePut", "getCtPostPut" }, + tableName, new Integer[] { 0, 0, 2, 2 }); cluster.killRegionServer(rs1.getRegionServer().getServerName()); Threads.sleep(1000); // Let the kill soak in. @@ -777,50 +776,14 @@ public class TestRegionObserverInterface { LOG.info("All regions assigned"); verifyMethodResult(SimpleRegionObserver.class, - new String[] { "getCtPreReplayWALs", "getCtPostReplayWALs", "getCtPreWALRestore", - "getCtPostWALRestore", "getCtPrePut", "getCtPostPut" }, - tableName, new Integer[] { 1, 1, 2, 2, 0, 0 }); + new String[] { "getCtPreReplayWALs", "getCtPostReplayWALs", "getCtPrePut", "getCtPostPut" }, + tableName, new Integer[] { 1, 1, 0, 0 }); } finally { util.deleteTable(tableName); table.close(); } } - @Test - public void testPreWALRestoreSkip() throws Exception { - LOG.info(TestRegionObserverInterface.class.getName() + "." + name.getMethodName()); - TableName tableName = TableName.valueOf(SimpleRegionObserver.TABLE_SKIPPED); - Table table = util.createTable(tableName, new byte[][] { A, B, C }); - - try (RegionLocator locator = util.getConnection().getRegionLocator(tableName)) { - JVMClusterUtil.RegionServerThread rs1 = cluster.startRegionServer(); - ServerName sn2 = rs1.getRegionServer().getServerName(); - String regEN = locator.getAllRegionLocations().get(0).getRegion().getEncodedName(); - - util.getAdmin().move(Bytes.toBytes(regEN), sn2); - while (!sn2.equals(locator.getAllRegionLocations().get(0).getServerName())) { - Thread.sleep(100); - } - - Put put = new Put(ROW); - put.addColumn(A, A, A); - put.addColumn(B, B, B); - put.addColumn(C, C, C); - table.put(put); - - cluster.killRegionServer(rs1.getRegionServer().getServerName()); - Threads.sleep(20000); // just to be sure that the kill has fully started. - util.waitUntilAllRegionsAssigned(tableName); - } - - verifyMethodResult(SimpleRegionObserver.class, - new String[] { "getCtPreWALRestore", "getCtPostWALRestore", }, tableName, - new Integer[] { 0, 0 }); - - util.deleteTable(tableName); - table.close(); - } - // called from testPreWALAppendIsWrittenToWAL private void testPreWALAppendHook(Table table, TableName tableName) throws IOException { int expectedCalls = 0; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java index be80d92bf57..105c57b55ea 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestWALObserver.java @@ -355,10 +355,9 @@ public class TestWALObserver { SampleRegionWALCoprocessor cp2 = region.getCoprocessorHost().findCoprocessor(SampleRegionWALCoprocessor.class); - // TODO: asserting here is problematic. assertNotNull(cp2); - assertTrue(cp2.isPreWALRestoreCalled()); - assertTrue(cp2.isPostWALRestoreCalled()); + assertTrue(cp2.isPreReplayWALsCalled()); + assertTrue(cp2.isPostReplayWALsCalled()); region.close(); wals2.close(); return null;