@InterfaceAudience.Private public class HBaseHbck extends Object implements Hbck
ClusterConnection.getHbck()
to obtain an instance of Hbck
instead of
constructing
an HBaseHbck directly. This will be mostly used by hbck tool.
Connection should be an unmanaged connection obtained via
ConnectionFactory.createConnection(Configuration)
.
An instance of this class is lightweight and not-thread safe. A new instance should be created by each thread. Pooling or caching of the instance is not recommended.
ConnectionFactory
,
ClusterConnection
,
Hbck
Modifier and Type | Field and Description |
---|---|
private boolean |
aborted |
private org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService.BlockingInterface |
hbck |
private static org.slf4j.Logger |
LOG |
private RpcControllerFactory |
rpcControllerFactory |
Constructor and Description |
---|
HBaseHbck(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService.BlockingInterface hbck,
RpcControllerFactory rpcControllerFactory) |
Modifier and Type | Method and Description |
---|---|
void |
abort(String why,
Throwable e)
Abort the server or client.
|
List<Long> |
assigns(List<String> encodedRegionNames,
boolean override)
Like
Admin.assign(byte[]) but 'raw' in that it can do more than one Region at a time
-- good if many Regions to online -- and it will schedule the assigns even in the case where
Master is initializing (as long as the ProcedureExecutor is up). |
List<Boolean> |
bypassProcedure(List<Long> pids,
long waitTime,
boolean override,
boolean recursive)
Bypass specified procedure and move it to completion.
|
void |
close() |
void |
fixMeta()
Fix Meta.
|
boolean |
isAborted()
Check if the server or client was aborted.
|
boolean |
runHbckChore()
Request HBCK chore to run at master side.
|
List<Long> |
scheduleServerCrashProcedure(List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> serverNames) |
TableState |
setTableStateInMeta(TableState state)
NOTE: This is a dangerous action, as existing running procedures for the table or regions
which belong to the table may get confused.
|
private static String |
toCommaDelimitedString(List<String> list) |
List<Long> |
unassigns(List<String> encodedRegionNames,
boolean override)
Like
Admin.unassign(byte[], boolean) but 'raw' in that it can do more than one Region
at a time -- good if many Regions to offline -- and it will schedule the assigns even in the
case where Master is initializing (as long as the ProcedureExecutor is up). |
private static final org.slf4j.Logger LOG
private boolean aborted
private final org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService.BlockingInterface hbck
private RpcControllerFactory rpcControllerFactory
HBaseHbck(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.HbckService.BlockingInterface hbck, RpcControllerFactory rpcControllerFactory)
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
public void abort(String why, Throwable e)
Abortable
public boolean isAborted()
Abortable
public TableState setTableStateInMeta(TableState state) throws IOException
setTableStateInMeta
in interface Hbck
state
- table stateIOException
public List<Long> assigns(List<String> encodedRegionNames, boolean override) throws IOException
Hbck
Admin.assign(byte[])
but 'raw' in that it can do more than one Region at a time
-- good if many Regions to online -- and it will schedule the assigns even in the case where
Master is initializing (as long as the ProcedureExecutor is up). Does NOT call Coprocessor
hooks.assigns
in interface Hbck
encodedRegionNames
- Region encoded names; e.g. 1588230740 is the hard-coded encoding
for hbase:meta region and de00010733901a05f5a2a3a382e27dd4 is an
example of what a random user-space encoded Region name looks like.override
- You need to add the override for case where a region has previously been
bypassed. When a Procedure has been bypassed, a Procedure will have completed
but no other Procedure will be able to make progress on the target entity
(intentionally). This override flag will override this fencing mechanism.IOException
public List<Long> unassigns(List<String> encodedRegionNames, boolean override) throws IOException
Hbck
Admin.unassign(byte[], boolean)
but 'raw' in that it can do more than one Region
at a time -- good if many Regions to offline -- and it will schedule the assigns even in the
case where Master is initializing (as long as the ProcedureExecutor is up). Does NOT call
Coprocessor hooks.unassigns
in interface Hbck
encodedRegionNames
- Region encoded names; e.g. 1588230740 is the hard-coded encoding
for hbase:meta region and de00010733901a05f5a2a3a382e27dd4 is an
example of what a random user-space encoded Region name looks like.override
- You need to add the override for case where a region has previously been
bypassed. When a Procedure has been bypassed, a Procedure will have completed
but no other Procedure will be able to make progress on the target entity
(intentionally). This override flag will override this fencing mechanism.IOException
private static String toCommaDelimitedString(List<String> list)
public List<Boolean> bypassProcedure(List<Long> pids, long waitTime, boolean override, boolean recursive) throws IOException
Hbck
bypassProcedure
in interface Hbck
pids
- of procedures to complete.waitTime
- wait time in ms for acquiring lock for a procedureoverride
- if override set to true, we will bypass the procedure even if it is executing.
This is for procedures which can't break out during execution (bugs?).recursive
- If set, if a parent procedure, we will find and bypass children and then
the parent procedure (Dangerous but useful in case where child procedure has been 'lost').
Does not always work. Experimental.IOException
public List<Long> scheduleServerCrashProcedure(List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> serverNames) throws IOException
scheduleServerCrashProcedure
in interface Hbck
IOException
public boolean runHbckChore() throws IOException
Hbck
runHbckChore
in interface Hbck
true
if HBCK chore ran, false
if HBCK chore already runningIOException
- if a remote or network exception occurspublic void fixMeta() throws IOException
Hbck
fixMeta
in interface Hbck
IOException
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.