From 681a49748e4da4b9cfc8172557ab955e9001c38c Mon Sep 17 00:00:00 2001 From: Geoffrey Jacoby Date: Mon, 20 Jan 2020 16:37:43 -0800 Subject: [PATCH] HBASE-23710 - Priority configuration for system coprocessors --- .../hbase/coprocessor/CoprocessorHost.java | 19 +++++++++++++++---- .../coprocessor/TestCoprocessorHost.java | 19 ++++++++++++++++--- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java index 4243d2f205..7e0f2ae2b8 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java @@ -143,8 +143,16 @@ public abstract class CoprocessorHost 1){ + overridePriority = Integer.parseInt(classNameAndPriority[1]); + hasPriorityOverride = true; + } className = className.trim(); if (findCoprocessor(className) != null) { // If already loaded will just continue @@ -155,13 +163,16 @@ public abstract class CoprocessorHost> host; host = new CoprocessorHostForTest<>(conf); + int overridePriority = Integer.MAX_VALUE - 1; + + final String coprocessor_v3 = + SimpleRegionObserverV3.class.getName() + "|" + overridePriority; // Try and load a coprocessor three times conf.setStrings(key, coprocessor, coprocessor, coprocessor, - SimpleRegionObserverV2.class.getName()); + SimpleRegionObserverV2.class.getName(), coprocessor_v3); host.loadSystemCoprocessors(conf, key); - // Two coprocessors(SimpleRegionObserver and SimpleRegionObserverV2) loaded - Assert.assertEquals(2, host.coprocEnvironments.size()); + // Three coprocessors(SimpleRegionObserver, SimpleRegionObserverV2, + // SimpleRegionObserverV3) loaded + Assert.assertEquals(3, host.coprocEnvironments.size()); // Check the priority value CoprocessorEnvironment simpleEnv = host.findCoprocessorEnvironment( SimpleRegionObserver.class.getName()); CoprocessorEnvironment simpleEnv_v2 = host.findCoprocessorEnvironment( SimpleRegionObserverV2.class.getName()); + CoprocessorEnvironment simpleEnv_v3 = host.findCoprocessorEnvironment( + SimpleRegionObserverV3.class.getName()); assertNotNull(simpleEnv); assertNotNull(simpleEnv_v2); + assertNotNull(simpleEnv_v3); assertEquals(Coprocessor.PRIORITY_SYSTEM, simpleEnv.getPriority()); assertEquals(Coprocessor.PRIORITY_SYSTEM + 1, simpleEnv_v2.getPriority()); + assertEquals(overridePriority, simpleEnv_v3.getPriority()); } public static class SimpleRegionObserverV2 extends SimpleRegionObserver { } + public static class SimpleRegionObserverV3 extends SimpleRegionObserver { + + } + private static class CoprocessorHostForTest extends CoprocessorHost> { final Configuration cpHostConf; -- 2.17.2 (Apple Git-113)