From e3cc93a2f5e3e4ec96a839570e04c478c7c359bd Mon Sep 17 00:00:00 2001 From: Guangxu Cheng Date: Sun, 2 Sep 2018 16:36:30 +0800 Subject: [PATCH] HBASE-21001 ReplicationObserver fails to load in HBase 2.0.0 --- .../hadoop/hbase/regionserver/HRegion.java | 19 +++++++++++++++++++ .../hbase/regionserver/HRegionServer.java | 19 ------------------- 2 files changed, 19 insertions(+), 19 deletions(-) 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 85785e23b8..4874e1fbc2 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 @@ -120,6 +120,7 @@ import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.conf.ConfigurationManager; import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver; +import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType; import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare; import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; @@ -150,6 +151,8 @@ import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector; import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController; import org.apache.hadoop.hbase.regionserver.wal.WALUtil; +import org.apache.hadoop.hbase.replication.ReplicationUtils; +import org.apache.hadoop.hbase.replication.regionserver.ReplicationObserver; import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils; import org.apache.hadoop.hbase.snapshot.SnapshotManifest; @@ -813,6 +816,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi this.htableDescriptor.getDurability() == Durability.USE_DEFAULT ? defaultDurability : this.htableDescriptor.getDurability(); + decorateRegionConfiguration(conf); if (rsServices != null) { this.rsAccounting = this.rsServices.getRegionServerAccounting(); // don't initialize coprocessors if not running within a regionserver @@ -8668,4 +8672,19 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi requestFlush0(tracker); } + /** + * This method modifies the region's configuration in order to inject replication-related + * features + * @param conf region server configurations + */ + static void decorateRegionConfiguration(Configuration conf) { + if (ReplicationUtils.isReplicationForBulkLoadDataEnabled(conf)) { + String plugins = conf.get(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, ""); + String replicationCoprocessorClass = ReplicationObserver.class.getCanonicalName(); + if (!plugins.contains(replicationCoprocessorClass)) { + conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, + plugins + "," + replicationCoprocessorClass); + } + } + } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index aec94d4155..02815c532a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -131,9 +131,7 @@ import org.apache.hadoop.hbase.regionserver.handler.RSProcedureHandler; import org.apache.hadoop.hbase.regionserver.handler.RegionReplicaFlushHandler; import org.apache.hadoop.hbase.regionserver.throttle.FlushThroughputControllerFactory; import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController; -import org.apache.hadoop.hbase.replication.ReplicationUtils; import org.apache.hadoop.hbase.replication.regionserver.ReplicationLoad; -import org.apache.hadoop.hbase.replication.regionserver.ReplicationObserver; import org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceInterface; import org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus; import org.apache.hadoop.hbase.security.Superusers; @@ -545,7 +543,6 @@ public class HRegionServer extends HasThread implements checkCodecs(this.conf); this.userProvider = UserProvider.instantiate(conf); FSUtils.setupShortCircuitRead(this.conf); - decorateRegionServerConfiguration(this.conf); // Disable usage of meta replicas in the regionserver this.conf.setBoolean(HConstants.USE_META_REPLICAS, false); @@ -3784,22 +3781,6 @@ public class HRegionServer extends HasThread implements } } - /** - * This method modifies the region server's configuration in order to inject replication-related - * features - * @param conf region server configurations - */ - static void decorateRegionServerConfiguration(Configuration conf) { - if (ReplicationUtils.isReplicationForBulkLoadDataEnabled(conf)) { - String plugins = conf.get(CoprocessorHost.REGIONSERVER_COPROCESSOR_CONF_KEY, ""); - String rsCoprocessorClass = ReplicationObserver.class.getCanonicalName(); - if (!plugins.contains(rsCoprocessorClass)) { - conf.set(CoprocessorHost.REGIONSERVER_COPROCESSOR_CONF_KEY, - plugins + "," + rsCoprocessorClass); - } - } - } - public boolean isShutDown() { return shutDown; } -- 2.17.1