|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.hadoop.hbase.regionserver.RegionMergeTransaction
@InterfaceAudience.Private public class RegionMergeTransaction
Executes region merge as a "transaction". It is similar with
SplitTransaction. Call prepare(RegionServerServices) to setup the
transaction, execute(Server, RegionServerServices) to run the
transaction and rollback(Server, RegionServerServices) to cleanup if
execute fails.
Here is an example of how you would use this class:
RegionMergeTransaction mt = new RegionMergeTransaction(this.conf, parent, midKey)
if (!mt.prepare(services)) return;
try {
mt.execute(server, services);
} catch (IOException ioe) {
try {
mt.rollback(server, services);
return;
} catch (RuntimeException e) {
myAbortable.abort("Failed merge, abort");
}
}
This class is not thread safe. Caller needs ensure merge is run by one thread only.
| Constructor Summary | |
|---|---|
RegionMergeTransaction(HRegion a,
HRegion b,
boolean forcible)
Constructor |
|
| Method Summary | |
|---|---|
static void |
createNodeMerging(ZooKeeperWatcher zkw,
HRegionInfo region,
ServerName serverName,
HRegionInfo a,
HRegionInfo b)
Creates a new ephemeral node in the PENDING_MERGE state for the merged region. |
HRegion |
execute(Server server,
RegionServerServices services)
Run the transaction. |
static HRegionInfo |
getMergedRegionInfo(HRegionInfo a,
HRegionInfo b)
Get merged region info through the specified two regions |
boolean |
prepare(RegionServerServices services)
Does checks on merge inputs. |
boolean |
rollback(Server server,
RegionServerServices services)
|
static int |
transitionMergingNode(ZooKeeperWatcher zkw,
HRegionInfo merged,
HRegionInfo a,
HRegionInfo b,
ServerName serverName,
int znodeVersion,
EventType beginState,
EventType endState)
Transitions an existing ephemeral node for the specified region which is currently in the begin state to be in the end state. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public RegionMergeTransaction(HRegion a,
HRegion b,
boolean forcible)
a - region a to mergeb - region b to mergeforcible - if false, we will only merge adjacent regions| Method Detail |
|---|
public boolean prepare(RegionServerServices services)
services -
true if the regions are mergeable else
false if they are not (e.g. its already closed, etc.).
public HRegion execute(Server server,
RegionServerServices services)
throws IOException
server - Hosting server instance. Can be null when testing (won't try
and update in zk if a null server)services - Used to online/offline regions.
IOException - If thrown, transaction failed. Call
rollback(Server, RegionServerServices)
IOExceptionrollback(Server, RegionServerServices)
public static HRegionInfo getMergedRegionInfo(HRegionInfo a,
HRegionInfo b)
a - merging region Ab - merging region B
public boolean rollback(Server server,
RegionServerServices services)
throws IOException
server - Hosting server instance (May be null when testing).services - Services of regionserver, used to online regions.
IOException - If thrown, rollback failed. Take drastic action.
public static void createNodeMerging(ZooKeeperWatcher zkw,
HRegionInfo region,
ServerName serverName,
HRegionInfo a,
HRegionInfo b)
throws org.apache.zookeeper.KeeperException,
IOException
Does not transition nodes from other states. If a node already exists for
this region, a KeeperException.NodeExistsException will be thrown.
zkw - zk referenceregion - region to be created as offlineserverName - server event originates from
org.apache.zookeeper.KeeperException
IOException
public static int transitionMergingNode(ZooKeeperWatcher zkw,
HRegionInfo merged,
HRegionInfo a,
HRegionInfo b,
ServerName serverName,
int znodeVersion,
EventType beginState,
EventType endState)
throws org.apache.zookeeper.KeeperException,
IOException
Does not transition nodes from other states. If for some reason the node could not be transitioned, the method returns -1. If the transition is successful, the version of the node after transition is returned.
This method can fail and return false for three different reasons:
Does not set any watches.
This method should only be used by a RegionServer when merging two regions.
zkw - zk referencemerged - region to be transitioned to openeda - merging region Ab - merging region BserverName - server event originates fromznodeVersion - expected version of data before modificationbeginState - the expected current state the znode should beendState - the state to be transition to
org.apache.zookeeper.KeeperException - if unexpected zookeeper exception
IOException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||