HBASE-15990 The priority value of subsequent coprocessors in the Coprocessor.Priority.SYSTEM list are not incremented by one (ChiaPing Tsai)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/55a04b78 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/55a04b78 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/55a04b78 Branch: refs/heads/hbase-12439 Commit: 55a04b78102a3a919c6e2e86fcdf98dd1d9a24e4 Parents: 9012a0b Author: tedyu <yuzhih...@gmail.com> Authored: Thu Jun 9 10:26:10 2016 -0700 Committer: Ted <yuzhih...@gmail.com> Committed: Thu Jun 9 10:26:10 2016 -0700 ---------------------------------------------------------------------- .../hbase/coprocessor/CoprocessorHost.java | 5 ++-- .../hbase/coprocessor/TestCoprocessorHost.java | 26 ++++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/55a04b78/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java index da0e8b1..e937569 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java @@ -158,9 +158,10 @@ public abstract class CoprocessorHost<E extends CoprocessorEnvironment> { implClass = cl.loadClass(className); // Add coprocessors as we go to guard against case where a coprocessor is specified twice // in the configuration - this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf)); + this.coprocessors.add(loadInstance(implClass, priority, conf)); LOG.info("System coprocessor " + className + " was loaded " + - "successfully with priority (" + priority++ + ")."); + "successfully with priority (" + priority + ")."); + ++priority; } catch (Throwable t) { // We always abort if system coprocessors cannot be loaded abortServer(className, t); http://git-wip-us.apache.org/repos/asf/hbase/blob/55a04b78/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java index 58cd0fb..66b5c60 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorHost.java @@ -29,6 +29,8 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.testclassification.SmallTests; import org.junit.Assert; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -51,9 +53,8 @@ public class TestCoprocessorHost { return this.aborted; } } - @Test - public void testDoubleLoading() { + public void testDoubleLoadingAndPriorityValue() { final Configuration conf = HBaseConfiguration.create(); CoprocessorHost<CoprocessorEnvironment> host = new CoprocessorHost<CoprocessorEnvironment>(new TestAbortable()) { @@ -61,7 +62,7 @@ public class TestCoprocessorHost { @Override public CoprocessorEnvironment createEnvironment(Class<?> implClass, - final Coprocessor instance, int priority, int sequence, Configuration conf) { + final Coprocessor instance, final int priority, int sequence, Configuration conf) { return new CoprocessorEnvironment() { final Coprocessor envInstance = instance; @@ -82,7 +83,7 @@ public class TestCoprocessorHost { @Override public int getPriority() { - return 0; + return priority; } @Override @@ -114,10 +115,19 @@ public class TestCoprocessorHost { }; final String key = "KEY"; final String coprocessor = "org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver"; - // Try and load coprocessor three times. - conf.setStrings(key, coprocessor, coprocessor, coprocessor); + // Try and load a coprocessor three times + conf.setStrings(key, coprocessor, coprocessor, coprocessor, SimpleRegionObserverV2.class.getName()); host.loadSystemCoprocessors(conf, key); - // Only one coprocessor loaded - Assert.assertEquals(1, host.coprocessors.size()); + // Two coprocessors(SimpleRegionObserver and SimpleRegionObserverV2) loaded + Assert.assertEquals(2, host.coprocessors.size()); + // Check the priority value + CoprocessorEnvironment simpleEnv = host.findCoprocessorEnvironment(SimpleRegionObserver.class.getName()); + CoprocessorEnvironment simpleEnv_v2 = host.findCoprocessorEnvironment(SimpleRegionObserverV2.class.getName()); + assertNotNull(simpleEnv); + assertNotNull(simpleEnv_v2); + assertEquals(Coprocessor.PRIORITY_SYSTEM, simpleEnv.getPriority()); + assertEquals(Coprocessor.PRIORITY_SYSTEM + 1, simpleEnv_v2.getPriority()); + } + public static class SimpleRegionObserverV2 extends SimpleRegionObserver { } } \ No newline at end of file