@InterfaceAudience.Private public class ReplicationSource extends Thread implements ReplicationSourceInterface
| Modifier and Type | Class and Description |
|---|---|
static class |
ReplicationSource.LogsComparator
Comparator used to compare logs together based on their start time
|
Thread.State, Thread.UncaughtExceptionHandler| Modifier and Type | Field and Description |
|---|---|
static org.apache.commons.logging.Log |
LOG |
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY| Constructor and Description |
|---|
ReplicationSource() |
| Modifier and Type | Method and Description |
|---|---|
void |
enqueueLog(org.apache.hadoop.fs.Path log)
Add a log to the list of logs to replicate
|
org.apache.hadoop.fs.Path |
getCurrentPath()
Get the current log that's replicated
|
protected boolean |
getNextPath()
Poll for the next path
|
String |
getPeerClusterId()
Get the id that the source is replicating to.
|
String |
getPeerClusterZnode()
Get the id that the source is replicating to
|
String |
getStats()
Get a string representation of the current statistics
for this source
|
void |
init(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
ReplicationSourceManager manager,
ReplicationQueues replicationQueues,
ReplicationPeers replicationPeers,
Stoppable stopper,
String peerClusterZnode,
UUID clusterId)
Instantiation method used by region servers
|
protected boolean |
isPeerEnabled()
check whether the peer is enabled or not
|
protected boolean |
openReader(int sleepMultiplier)
Open a reader on the current path
|
protected boolean |
processEndOfFile()
If the queue isn't empty, switch to the next one
Else if this is a recovered queue, it means we're done!
Else we'll just continue to try reading the log file
|
protected boolean |
readAllEntriesToReplicateOrNextFile(boolean currentWALisBeingWrittenTo,
List<HLog.Entry> entries)
Read all the entries from the current log files and retain those
that need to be replicated.
|
protected void |
removeNonReplicableEdits(HLog.Entry entry)
We only want KVs that are scoped other than local
|
void |
run() |
protected void |
shipEdits(boolean currentWALisBeingWrittenTo,
List<HLog.Entry> entries)
Do the shipping logic
|
protected boolean |
sleepForRetries(String msg,
int sleepMultiplier)
Do the sleeping logic
|
void |
startup()
Start the replication
|
void |
terminate(String reason)
End the replication
|
void |
terminate(String reason,
Exception cause)
End the replication
|
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yieldpublic void init(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
ReplicationSourceManager manager,
ReplicationQueues replicationQueues,
ReplicationPeers replicationPeers,
Stoppable stopper,
String peerClusterZnode,
UUID clusterId)
throws IOException
init in interface ReplicationSourceInterfaceconf - configuration to usefs - file system to usemanager - replication manager to ping tostopper - the atomic boolean to use to stop the regionserverpeerClusterZnode - the name of our znodeIOExceptionpublic void enqueueLog(org.apache.hadoop.fs.Path log)
ReplicationSourceInterfaceenqueueLog in interface ReplicationSourceInterfacelog - path to the log to replicateprotected boolean readAllEntriesToReplicateOrNextFile(boolean currentWALisBeingWrittenTo,
List<HLog.Entry> entries)
throws IOException
currentWALisBeingWrittenTo - is the current WAL being written toentries - resulting entries to be replicatedIOExceptionprotected boolean getNextPath()
protected boolean openReader(int sleepMultiplier)
sleepMultiplier - by how many times the default sleeping time is augmentedprotected boolean sleepForRetries(String msg, int sleepMultiplier)
msg - Why we sleepsleepMultiplier - by how many times the default sleeping time is augmentedsleepMultiplier is < maxRetriesMultiplierprotected void removeNonReplicableEdits(HLog.Entry entry)
entry - The entry to check for replicationprotected void shipEdits(boolean currentWALisBeingWrittenTo,
List<HLog.Entry> entries)
currentWALisBeingWrittenTo - was the current WAL being (seemingly)
written to when this method was calledprotected boolean isPeerEnabled()
protected boolean processEndOfFile()
public void startup()
ReplicationSourceInterfacestartup in interface ReplicationSourceInterfacepublic void terminate(String reason)
ReplicationSourceInterfaceterminate in interface ReplicationSourceInterfacereason - why it's terminatingpublic void terminate(String reason, Exception cause)
ReplicationSourceInterfaceterminate in interface ReplicationSourceInterfacereason - why it's terminatingcause - the error that's causing itpublic String getPeerClusterZnode()
ReplicationSourceInterfacegetPeerClusterZnode in interface ReplicationSourceInterfacepublic String getPeerClusterId()
ReplicationSourceInterfacegetPeerClusterId in interface ReplicationSourceInterfacepublic org.apache.hadoop.fs.Path getCurrentPath()
ReplicationSourceInterfacegetCurrentPath in interface ReplicationSourceInterfacepublic String getStats()
ReplicationSourceInterfacegetStats in interface ReplicationSourceInterfaceCopyright © 2014 The Apache Software Foundation. All rights reserved.