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
This commit is contained in:
Elliott Clark 2015-09-30 15:30:15 -07:00
parent c8e280ec88
commit a77f830198
3 changed files with 12 additions and 1 deletions

View File

@ -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}"
;;

View File

@ -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 {

View File

@ -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 {