You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2010/12/15 20:47:39 UTC
svn commit: r1049681 - in /hbase/branches/0.90: ./
src/main/java/org/apache/hadoop/hbase/
src/main/java/org/apache/hadoop/hbase/master/
src/main/java/org/apache/hadoop/hbase/replication/regionserver/
src/main/resources/
Author: jdcryans
Date: Wed Dec 15 19:47:39 2010
New Revision: 1049681
URL: http://svn.apache.org/viewvc?rev=1049681&view=rev
Log:
HBASE-3360 ReplicationLogCleaner is enabled by default in 0.90 -- causes NPE
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/HConstants.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/LogCleaner.java
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/replication/regionserver/Replication.java
hbase/branches/0.90/src/main/resources/hbase-default.xml
Modified: hbase/branches/0.90/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Wed Dec 15 19:47:39 2010
@@ -749,6 +749,7 @@ Release 0.90.0 - Unreleased
HBASE-3356 Add more checks in replication if RS is stopped
HBASE-3358 Recovered replication queue wait on themselves when terminating
HBASE-3359 LogRoller not added as a WAL listener when replication is enabled
+ HBASE-3360 ReplicationLogCleaner is enabled by default in 0.90 -- causes NPE
IMPROVEMENTS
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/HConstants.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/HConstants.java?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/HConstants.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/HConstants.java Wed Dec 15 19:47:39 2010
@@ -361,6 +361,9 @@ public final class HConstants {
/** HBCK special code name used as server name when manipulating ZK nodes */
public static final String HBCK_CODE_NAME = "HBCKServerName";
+ public static final String HBASE_MASTER_LOGCLEANER_PLUGINS =
+ "hbase.master.logcleaner.plugins";
+
private HConstants() {
// Can't be instantiated with this ctor.
}
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Wed Dec 15 19:47:39 2010
@@ -73,6 +73,7 @@ import org.apache.hadoop.hbase.master.ha
import org.apache.hadoop.hbase.master.handler.TableModifyFamilyHandler;
import org.apache.hadoop.hbase.master.metrics.MasterMetrics;
import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.hbase.replication.regionserver.Replication;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.InfoServer;
import org.apache.hadoop.hbase.util.Pair;
@@ -202,6 +203,8 @@ implements HMasterInterface, HMasterRegi
// set the thread name now we have an address
setName(MASTER + "-" + this.address);
+ Replication.decorateMasterConfiguration(this.conf);
+
this.rpcServer.startThreads();
// Hack! Maps DFSClient => Master for logs. HDFS made this
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/LogCleaner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/LogCleaner.java?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/LogCleaner.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/master/LogCleaner.java Wed Dec 15 19:47:39 2010
@@ -34,6 +34,8 @@ import org.apache.hadoop.hbase.RemoteExc
import org.apache.hadoop.hbase.Stoppable;
import org.apache.hadoop.hbase.regionserver.wal.HLog;
+import static org.apache.hadoop.hbase.HConstants.HBASE_MASTER_LOGCLEANER_PLUGINS;
+
/**
* This Chore, everytime it runs, will clear the wal logs in the old logs folder
* that are deletable for each log cleaner in the chain, in order to limit the
@@ -79,7 +81,7 @@ public class LogCleaner extends Chore {
* ReplicationLogCleaner and SnapshotLogCleaner.
*/
private void initLogCleanersChain() {
- String[] logCleaners = conf.getStrings("hbase.master.logcleaner.plugins");
+ String[] logCleaners = conf.getStrings(HBASE_MASTER_LOGCLEANER_PLUGINS);
if (logCleaners != null) {
for (String className : logCleaners) {
LogCleanerDelegate logCleaner = newLogCleaner(className, conf);
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/replication/regionserver/Replication.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/replication/regionserver/Replication.java?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/replication/regionserver/Replication.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/replication/regionserver/Replication.java Wed Dec 15 19:47:39 2010
@@ -27,7 +27,6 @@ import java.util.concurrent.atomic.Atomi
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.Server;
@@ -36,9 +35,14 @@ import org.apache.hadoop.hbase.regionser
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
import org.apache.hadoop.hbase.regionserver.wal.WALObserver;
import org.apache.hadoop.hbase.replication.ReplicationZookeeper;
+import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.zookeeper.KeeperException;
+import static org.apache.hadoop.hbase.HConstants.HBASE_MASTER_LOGCLEANER_PLUGINS;
+import static org.apache.hadoop.hbase.HConstants.REPLICATION_ENABLE_KEY;
+import static org.apache.hadoop.hbase.HConstants.REPLICATION_SCOPE_LOCAL;
+
/**
* Gateway to Replication. Used by {@link org.apache.hadoop.hbase.regionserver.HRegionServer}.
*/
@@ -82,7 +86,7 @@ public class Replication implements WALO
* @return True if replication is enabled.
*/
public static boolean isReplication(final Configuration c) {
- return c.getBoolean(HConstants.REPLICATION_ENABLE_KEY, false);
+ return c.getBoolean(REPLICATION_ENABLE_KEY, false);
}
/**
@@ -134,7 +138,7 @@ public class Replication implements WALO
for (KeyValue kv : logEdit.getKeyValues()) {
family = kv.getFamily();
int scope = info.getTableDesc().getFamily(family).getScope();
- if (scope != HConstants.REPLICATION_SCOPE_LOCAL &&
+ if (scope != REPLICATION_SCOPE_LOCAL &&
!scopes.containsKey(family)) {
scopes.put(family, scope);
}
@@ -149,6 +153,22 @@ public class Replication implements WALO
getReplicationManager().logRolled(p);
}
+ /**
+ * This method modifies the master's configuration in order to inject
+ * replication-related features
+ * @param conf
+ */
+ public static void decorateMasterConfiguration(Configuration conf) {
+ if (!isReplication(conf)) {
+ return;
+ }
+ String plugins = conf.get(HBASE_MASTER_LOGCLEANER_PLUGINS);
+ if (!plugins.contains(ReplicationLogCleaner.class.toString())) {
+ conf.set(HBASE_MASTER_LOGCLEANER_PLUGINS,
+ plugins + "," + ReplicationLogCleaner.class.getCanonicalName());
+ }
+ }
+
@Override
public void logRollRequested() {
// Not interested
Modified: hbase/branches/0.90/src/main/resources/hbase-default.xml
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/resources/hbase-default.xml?rev=1049681&r1=1049680&r2=1049681&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/resources/hbase-default.xml (original)
+++ hbase/branches/0.90/src/main/resources/hbase-default.xml Wed Dec 15 19:47:39 2010
@@ -290,7 +290,7 @@
</property>
<property>
<name>hbase.master.logcleaner.plugins</name>
- <value>org.apache.hadoop.hbase.master.TimeToLiveLogCleaner,org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner</value>
+ <value>org.apache.hadoop.hbase.master.TimeToLiveLogCleaner</value>
<description>A comma-separated list of LogCleanerDelegate invoked by
the LogsCleaner service. These WAL/HLog cleaners are called in order,
so put the HLog cleaner that prunes the most HLog files in front. To