diff --git a/bin/hbase-daemon.sh b/bin/hbase-daemon.sh index 673e25ad3d0..6f0a52425b2 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 29b3e8b12b6..1701588a42b 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 0b21a2afc23..9e88523631c 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 @@ -187,6 +187,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 @@ -599,6 +601,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()); + } + }); } /*