HBASE-9433 OpenRegionHandler uses different assignment timeout
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1520173 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
813f88a482
commit
a6fcaa7f2d
|
@ -39,43 +39,41 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.apache.hadoop.classification.InterfaceAudience;
|
import org.apache.hadoop.classification.InterfaceAudience;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.hbase.Chore;
|
import org.apache.hadoop.hbase.Chore;
|
||||||
import org.apache.hadoop.hbase.HBaseIOException;
|
import org.apache.hadoop.hbase.HBaseIOException;
|
||||||
import org.apache.hadoop.hbase.TableName;
|
|
||||||
import org.apache.hadoop.hbase.exceptions.DeserializationException;
|
|
||||||
import org.apache.hadoop.hbase.HConstants;
|
import org.apache.hadoop.hbase.HConstants;
|
||||||
import org.apache.hadoop.hbase.HRegionInfo;
|
import org.apache.hadoop.hbase.HRegionInfo;
|
||||||
|
import org.apache.hadoop.hbase.NotServingRegionException;
|
||||||
import org.apache.hadoop.hbase.RegionTransition;
|
import org.apache.hadoop.hbase.RegionTransition;
|
||||||
import org.apache.hadoop.hbase.Server;
|
import org.apache.hadoop.hbase.Server;
|
||||||
import org.apache.hadoop.hbase.ServerName;
|
import org.apache.hadoop.hbase.ServerName;
|
||||||
import org.apache.hadoop.hbase.Stoppable;
|
import org.apache.hadoop.hbase.Stoppable;
|
||||||
|
import org.apache.hadoop.hbase.TableName;
|
||||||
|
import org.apache.hadoop.hbase.TableNotFoundException;
|
||||||
import org.apache.hadoop.hbase.catalog.CatalogTracker;
|
import org.apache.hadoop.hbase.catalog.CatalogTracker;
|
||||||
import org.apache.hadoop.hbase.catalog.MetaReader;
|
import org.apache.hadoop.hbase.catalog.MetaReader;
|
||||||
import org.apache.hadoop.hbase.client.Result;
|
import org.apache.hadoop.hbase.client.Result;
|
||||||
import org.apache.hadoop.hbase.NotServingRegionException;
|
import org.apache.hadoop.hbase.exceptions.DeserializationException;
|
||||||
import org.apache.hadoop.hbase.regionserver.RegionAlreadyInTransitionException;
|
|
||||||
import org.apache.hadoop.hbase.regionserver.RegionServerStoppedException;
|
|
||||||
import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;
|
|
||||||
import org.apache.hadoop.hbase.TableNotFoundException;
|
|
||||||
import org.apache.hadoop.hbase.executor.EventHandler;
|
import org.apache.hadoop.hbase.executor.EventHandler;
|
||||||
import org.apache.hadoop.hbase.executor.EventType;
|
import org.apache.hadoop.hbase.executor.EventType;
|
||||||
import org.apache.hadoop.hbase.executor.ExecutorService;
|
import org.apache.hadoop.hbase.executor.ExecutorService;
|
||||||
|
import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;
|
||||||
import org.apache.hadoop.hbase.master.RegionState.State;
|
import org.apache.hadoop.hbase.master.RegionState.State;
|
||||||
import org.apache.hadoop.hbase.master.balancer.FavoredNodeAssignmentHelper;
|
import org.apache.hadoop.hbase.master.balancer.FavoredNodeAssignmentHelper;
|
||||||
import org.apache.hadoop.hbase.master.balancer.FavoredNodeLoadBalancer;
|
import org.apache.hadoop.hbase.master.balancer.FavoredNodeLoadBalancer;
|
||||||
import org.apache.hadoop.hbase.master.balancer.FavoredNodesPlan;
|
|
||||||
import org.apache.hadoop.hbase.master.handler.ClosedRegionHandler;
|
import org.apache.hadoop.hbase.master.handler.ClosedRegionHandler;
|
||||||
import org.apache.hadoop.hbase.master.handler.DisableTableHandler;
|
import org.apache.hadoop.hbase.master.handler.DisableTableHandler;
|
||||||
import org.apache.hadoop.hbase.master.handler.EnableTableHandler;
|
import org.apache.hadoop.hbase.master.handler.EnableTableHandler;
|
||||||
import org.apache.hadoop.hbase.master.handler.MergedRegionHandler;
|
import org.apache.hadoop.hbase.master.handler.MergedRegionHandler;
|
||||||
import org.apache.hadoop.hbase.master.handler.OpenedRegionHandler;
|
import org.apache.hadoop.hbase.master.handler.OpenedRegionHandler;
|
||||||
import org.apache.hadoop.hbase.master.handler.SplitRegionHandler;
|
import org.apache.hadoop.hbase.master.handler.SplitRegionHandler;
|
||||||
|
import org.apache.hadoop.hbase.regionserver.RegionAlreadyInTransitionException;
|
||||||
import org.apache.hadoop.hbase.regionserver.RegionOpeningState;
|
import org.apache.hadoop.hbase.regionserver.RegionOpeningState;
|
||||||
|
import org.apache.hadoop.hbase.regionserver.RegionServerStoppedException;
|
||||||
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
|
||||||
import org.apache.hadoop.hbase.util.KeyLocker;
|
import org.apache.hadoop.hbase.util.KeyLocker;
|
||||||
import org.apache.hadoop.hbase.util.Pair;
|
import org.apache.hadoop.hbase.util.Pair;
|
||||||
|
@ -93,6 +91,7 @@ import org.apache.zookeeper.KeeperException.NoNodeException;
|
||||||
import org.apache.zookeeper.KeeperException.NodeExistsException;
|
import org.apache.zookeeper.KeeperException.NodeExistsException;
|
||||||
import org.apache.zookeeper.data.Stat;
|
import org.apache.zookeeper.data.Stat;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.collect.LinkedHashMultimap;
|
import com.google.common.collect.LinkedHashMultimap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -109,6 +108,11 @@ public class AssignmentManager extends ZooKeeperListener {
|
||||||
public static final ServerName HBCK_CODE_SERVERNAME = new ServerName(HConstants.HBCK_CODE_NAME,
|
public static final ServerName HBCK_CODE_SERVERNAME = new ServerName(HConstants.HBCK_CODE_NAME,
|
||||||
-1, -1L);
|
-1, -1L);
|
||||||
|
|
||||||
|
public static final String ASSIGNMENT_TIMEOUT = "hbase.master.assignment.timeoutmonitor.timeout";
|
||||||
|
public static final int DEFAULT_ASSIGNMENT_TIMEOUT_DEFAULT = 600000;
|
||||||
|
public static final String ASSIGNMENT_TIMEOUT_MANAGEMENT = "hbase.assignment.timeout.management";
|
||||||
|
public static final boolean DEFAULT_ASSIGNMENT_TIMEOUT_MANAGEMENT = false;
|
||||||
|
|
||||||
protected final Server server;
|
protected final Server server;
|
||||||
|
|
||||||
private ServerManager serverManager;
|
private ServerManager serverManager;
|
||||||
|
@ -249,13 +253,14 @@ public class AssignmentManager extends ZooKeeperListener {
|
||||||
this.shouldAssignRegionsWithFavoredNodes = conf.getClass(
|
this.shouldAssignRegionsWithFavoredNodes = conf.getClass(
|
||||||
HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class).equals(
|
HConstants.HBASE_MASTER_LOADBALANCER_CLASS, Object.class).equals(
|
||||||
FavoredNodeLoadBalancer.class);
|
FavoredNodeLoadBalancer.class);
|
||||||
this.tomActivated = conf.getBoolean("hbase.assignment.timeout.management", false);
|
this.tomActivated = conf.getBoolean(
|
||||||
|
ASSIGNMENT_TIMEOUT_MANAGEMENT, DEFAULT_ASSIGNMENT_TIMEOUT_MANAGEMENT);
|
||||||
if (tomActivated){
|
if (tomActivated){
|
||||||
this.serversInUpdatingTimer = new ConcurrentSkipListSet<ServerName>();
|
this.serversInUpdatingTimer = new ConcurrentSkipListSet<ServerName>();
|
||||||
this.timeoutMonitor = new TimeoutMonitor(
|
this.timeoutMonitor = new TimeoutMonitor(
|
||||||
conf.getInt("hbase.master.assignment.timeoutmonitor.period", 30000),
|
conf.getInt("hbase.master.assignment.timeoutmonitor.period", 30000),
|
||||||
server, serverManager,
|
server, serverManager,
|
||||||
conf.getInt("hbase.master.assignment.timeoutmonitor.timeout", 600000));
|
conf.getInt(ASSIGNMENT_TIMEOUT, DEFAULT_ASSIGNMENT_TIMEOUT_DEFAULT));
|
||||||
this.timerUpdater = new TimerUpdater(conf.getInt(
|
this.timerUpdater = new TimerUpdater(conf.getInt(
|
||||||
"hbase.master.assignment.timerupdater.period", 10000), server);
|
"hbase.master.assignment.timerupdater.period", 10000), server);
|
||||||
Threads.setDaemonThreadRunning(timerUpdater.getThread(),
|
Threads.setDaemonThreadRunning(timerUpdater.getThread(),
|
||||||
|
|
|
@ -109,6 +109,7 @@ import org.apache.hadoop.hbase.io.hfile.BlockCache;
|
||||||
import org.apache.hadoop.hbase.io.hfile.CacheConfig;
|
import org.apache.hadoop.hbase.io.hfile.CacheConfig;
|
||||||
import org.apache.hadoop.hbase.ipc.RpcCallContext;
|
import org.apache.hadoop.hbase.ipc.RpcCallContext;
|
||||||
import org.apache.hadoop.hbase.ipc.RpcServer;
|
import org.apache.hadoop.hbase.ipc.RpcServer;
|
||||||
|
import org.apache.hadoop.hbase.master.AssignmentManager;
|
||||||
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
|
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
|
||||||
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
|
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
|
||||||
import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;
|
import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;
|
||||||
|
@ -2921,8 +2922,8 @@ public class HRegion implements HeapSize { // , Writable{
|
||||||
2000);
|
2000);
|
||||||
// How often to send a progress report (default 1/2 master timeout)
|
// How often to send a progress report (default 1/2 master timeout)
|
||||||
int period = this.conf.getInt("hbase.hstore.report.period",
|
int period = this.conf.getInt("hbase.hstore.report.period",
|
||||||
this.conf.getInt("hbase.master.assignment.timeoutmonitor.timeout",
|
this.conf.getInt(AssignmentManager.ASSIGNMENT_TIMEOUT,
|
||||||
180000) / 2);
|
AssignmentManager.DEFAULT_ASSIGNMENT_TIMEOUT_DEFAULT) / 2);
|
||||||
long lastReport = EnvironmentEdgeManager.currentTimeMillis();
|
long lastReport = EnvironmentEdgeManager.currentTimeMillis();
|
||||||
|
|
||||||
while ((entry = reader.next()) != null) {
|
while ((entry = reader.next()) != null) {
|
||||||
|
|
|
@ -30,6 +30,7 @@ import org.apache.hadoop.hbase.HTableDescriptor;
|
||||||
import org.apache.hadoop.hbase.Server;
|
import org.apache.hadoop.hbase.Server;
|
||||||
import org.apache.hadoop.hbase.executor.EventHandler;
|
import org.apache.hadoop.hbase.executor.EventHandler;
|
||||||
import org.apache.hadoop.hbase.executor.EventType;
|
import org.apache.hadoop.hbase.executor.EventType;
|
||||||
|
import org.apache.hadoop.hbase.master.AssignmentManager;
|
||||||
import org.apache.hadoop.hbase.regionserver.HRegion;
|
import org.apache.hadoop.hbase.regionserver.HRegion;
|
||||||
import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
|
import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
|
||||||
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
|
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
|
||||||
|
@ -37,7 +38,6 @@ import org.apache.hadoop.hbase.util.CancelableProgressable;
|
||||||
import org.apache.hadoop.hbase.zookeeper.ZKAssign;
|
import org.apache.hadoop.hbase.zookeeper.ZKAssign;
|
||||||
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
|
import org.apache.hadoop.hbase.zookeeper.ZKUtil;
|
||||||
import org.apache.zookeeper.KeeperException;
|
import org.apache.zookeeper.KeeperException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles opening of a region on a region server.
|
* Handles opening of a region on a region server.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -84,9 +84,11 @@ public class OpenRegionHandler extends EventHandler {
|
||||||
this.htd = htd;
|
this.htd = htd;
|
||||||
this.versionOfOfflineNode = versionOfOfflineNode;
|
this.versionOfOfflineNode = versionOfOfflineNode;
|
||||||
tomActivated = this.server.getConfiguration().
|
tomActivated = this.server.getConfiguration().
|
||||||
getBoolean("hbase.assignment.timeout.management", false);
|
getBoolean(AssignmentManager.ASSIGNMENT_TIMEOUT_MANAGEMENT,
|
||||||
|
AssignmentManager.DEFAULT_ASSIGNMENT_TIMEOUT_MANAGEMENT);
|
||||||
assignmentTimeout = this.server.getConfiguration().
|
assignmentTimeout = this.server.getConfiguration().
|
||||||
getInt("hbase.master.assignment.timeoutmonitor.period", 10000);
|
getInt(AssignmentManager.ASSIGNMENT_TIMEOUT,
|
||||||
|
AssignmentManager.DEFAULT_ASSIGNMENT_TIMEOUT_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public HRegionInfo getRegionInfo() {
|
public HRegionInfo getRegionInfo() {
|
||||||
|
|
Loading…
Reference in New Issue