From ec79ca3ce5d08e7e4e195831ace82f79d1898421 Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Wed, 30 Sep 2015 15:30:15 -0700 Subject: [PATCH] HBASE-14529 Respond to SIGHUP to reload config Summary: Add a signal handler to reload the config. Test Plan: Send the command and see that configs get reloaded. Differential Revision: https://reviews.facebook.net/D47877 --- bin/hbase-daemon.sh | 3 ++- .../java/org/apache/hadoop/hbase/conf/ConfigurationManager.java | 1 + .../java/org/apache/hadoop/hbase/regionserver/HRegionServer.java | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bin/hbase-daemon.sh b/bin/hbase-daemon.sh index 673e25a..6f0a524 100755 --- a/bin/hbase-daemon.sh +++ b/bin/hbase-daemon.sh @@ -186,8 +186,9 @@ case $startStop in hbase_rotate_log $HBASE_LOGOUT hbase_rotate_log $HBASE_LOGGC echo starting $command, logging to $HBASE_LOGOUT - nohup $thiscmd --config "${HBASE_CONF_DIR}" \ + $thiscmd --config "${HBASE_CONF_DIR}" \ foreground_start $command $args < /dev/null > ${HBASE_LOGOUT} 2>&1 & + disown -h -r sleep 1; head "${HBASE_LOGOUT}" ;; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/conf/ConfigurationManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/conf/ConfigurationManager.java index 29b3e8b..1701588 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/conf/ConfigurationManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/conf/ConfigurationManager.java @@ -114,6 +114,7 @@ public class ConfigurationManager { * all the observers that are expressed interest to do that. */ public void notifyAllObservers(Configuration conf) { + LOG.info("Starting to notify all observers that config changed."); synchronized (configurationObservers) { for (ConfigurationObserver observer : configurationObservers) { try { 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 59d13fa..0de28e6 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 @@ -186,6 +186,8 @@ import com.google.protobuf.RpcCallback; import com.google.protobuf.RpcController; import com.google.protobuf.Service; import com.google.protobuf.ServiceException; +import sun.misc.Signal; +import sun.misc.SignalHandler; /** * HRegionServer makes a set of HRegions available to clients. It checks in with @@ -603,6 +605,13 @@ public class HRegionServer extends HasThread implements putUpWebUI(); this.walRoller = new LogRoller(this, this); this.choreService = new ChoreService(getServerName().toString()); + + Signal.handle(new Signal("HUP"), new SignalHandler() { + public void handle(Signal signal) { + getConfiguration().reloadConfiguration(); + configurationManager.notifyAllObservers(getConfiguration()); + } + }); } protected TableDescriptors getFsTableDescriptors() throws IOException { -- 2.5.3