@InterfaceAudience.LimitedPrivate(value="HBCK") public interface Hbck extends Abortable, Closeable
ClusterConnection.getHbck()
and call
Closeable.close()
when done.
WARNING: the below methods can damage the cluster. It may leave the cluster in an indeterminate state, e.g. region not assigned, or some hdfs files left behind. After running any of the below, operators may have to do some clean up on hdfs or schedule some assign procedures to get regions back online. DO AT YOUR OWN RISK. For experienced users only.
ConnectionFactory
,
ClusterConnection
Modifier and Type | Method and Description |
---|---|
default List<Long> |
assigns(List<String> encodedRegionNames) |
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 |
fixMeta()
Fix Meta.
|
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)
Update table state in Meta only.
|
default List<Long> |
unassigns(List<String> encodedRegionNames) |
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). |
TableState setTableStateInMeta(TableState state) throws IOException
state
- table stateIOException
List<Long> assigns(List<String> encodedRegionNames, boolean override) throws IOException
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.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.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.IOException
default List<Long> assigns(List<String> encodedRegionNames) throws IOException
IOException
List<Long> unassigns(List<String> encodedRegionNames, boolean override) throws IOException
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.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.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.IOException
default List<Long> unassigns(List<String> encodedRegionNames) throws IOException
IOException
List<Boolean> bypassProcedure(List<Long> pids, long waitTime, boolean override, boolean recursive) throws IOException
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
List<Long> scheduleServerCrashProcedure(List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> serverNames) throws IOException
IOException
boolean runHbckChore() throws IOException
true
if HBCK chore ran, false
if HBCK chore already runningIOException
- if a remote or network exception occursvoid fixMeta() throws IOException
IOException
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.