@InterfaceAudience.Private public class ReplicationSourceManager extends java.lang.Object implements ReplicationListener
Constructor and Description |
---|
ReplicationSourceManager(ReplicationQueues replicationQueues,
ReplicationPeers replicationPeers,
ReplicationTracker replicationTracker,
Configuration conf,
Server server,
FileSystem fs,
Path logDir,
Path oldLogDir,
java.util.UUID clusterId)
Creates a replication manager and sets the watch on all the other registered region servers
|
Modifier and Type | Method and Description |
---|---|
void |
addHFileRefs(TableName tableName,
byte[] family,
java.util.List<Pair<Path,Path>> pairs) |
protected ReplicationSourceInterface |
addSource(java.lang.String id)
Add a new normal source to this region server
|
void |
cleanOldLogs(java.lang.String key,
java.lang.String id,
boolean queueRecovered)
Cleans a log file and all older files from ZK.
|
void |
cleanUpHFileRefs(java.lang.String peerId,
java.util.List<java.lang.String> files) |
void |
closeRecoveredQueue(ReplicationSourceInterface src)
Clear the references to the specified old source
|
void |
deleteSource(java.lang.String peerId,
boolean closeConnection)
Delete a complete queue of wals associated with a peer cluster
|
FileSystem |
getFs()
Get the handle on the local file system
|
Path |
getLogDir()
Get the directory where wals are stored by their RSs
|
Path |
getOldLogDir()
Get the directory where wals are archived
|
java.util.List<ReplicationSourceInterface> |
getOldSources()
Get a list of all the old sources of this rs
|
protected ReplicationSourceInterface |
getReplicationSource(Configuration conf,
FileSystem fs,
ReplicationSourceManager manager,
ReplicationQueues replicationQueues,
ReplicationPeers replicationPeers,
Server server,
java.lang.String peerId,
java.util.UUID clusterId,
ReplicationPeerConfig peerConfig,
ReplicationPeer replicationPeer)
Factory method to create a replication source
|
java.util.List<ReplicationSourceInterface> |
getSources()
Get a list of all the normal sources of this rs
|
java.lang.String |
getStats()
Get a string representation of all the sources' metrics
|
protected java.util.Map<java.lang.String,java.util.SortedSet<java.lang.String>> |
getWALs()
Get a copy of the wals of the first source on this rs
|
protected java.util.Map<java.lang.String,java.util.SortedSet<java.lang.String>> |
getWalsByIdRecoveredQueues()
Get a copy of the wals of the recovered sources on this rs
|
protected void |
init()
Adds a normal source per registered peer cluster and tries to process all
old region server wal queues
|
void |
join()
Terminate the replication on this region server
|
void |
logPositionAndCleanOldLogs(Path log,
java.lang.String id,
long position,
boolean queueRecovered,
boolean holdLogInZK)
Provide the id of the peer and a log key and this method will figure which
wal it belongs to and will log, for this region server, the current
position.
|
void |
peerListChanged(java.util.List<java.lang.String> peerIds)
The list of registered peer clusters has changed.
|
void |
peerRemoved(java.lang.String peerId)
A peer cluster has been removed (i.e.
|
void |
regionServerRemoved(java.lang.String regionserver)
A region server has been removed from the local cluster
|
void |
removePeer(java.lang.String id)
Thie method first deletes all the recovered sources for the specified
id, then deletes the normal source (deleting all related data in ZK).
|
public ReplicationSourceManager(ReplicationQueues replicationQueues, ReplicationPeers replicationPeers, ReplicationTracker replicationTracker, Configuration conf, Server server, FileSystem fs, Path logDir, Path oldLogDir, java.util.UUID clusterId)
replicationQueues
- the interface for manipulating replication queuesreplicationPeers
- replicationTracker
- conf
- the configuration to useserver
- the server for this region serverfs
- the file system to uselogDir
- the directory that contains all wal directories of live RSsoldLogDir
- the directory where old logs are archivedclusterId
- public void logPositionAndCleanOldLogs(Path log, java.lang.String id, long position, boolean queueRecovered, boolean holdLogInZK)
log
- Path to the log currently being replicated from
replication status in zookeeper. It will also delete older entries.id
- id of the peer clusterposition
- current location in the logqueueRecovered
- indicates if this queue comes from another region serverholdLogInZK
- if true then the log is retained in ZKpublic void cleanOldLogs(java.lang.String key, java.lang.String id, boolean queueRecovered)
key
- Path to the logid
- id of the peer clusterqueueRecovered
- Whether this is a recovered queueprotected void init() throws java.io.IOException, ReplicationException
java.io.IOException
ReplicationException
protected ReplicationSourceInterface addSource(java.lang.String id) throws java.io.IOException, ReplicationException
id
- the id of the peer clusterjava.io.IOException
ReplicationException
public void deleteSource(java.lang.String peerId, boolean closeConnection)
peerId
- Id of the peer cluster queue of wals to deletepublic void join()
protected java.util.Map<java.lang.String,java.util.SortedSet<java.lang.String>> getWALs()
protected java.util.Map<java.lang.String,java.util.SortedSet<java.lang.String>> getWalsByIdRecoveredQueues()
public java.util.List<ReplicationSourceInterface> getSources()
public java.util.List<ReplicationSourceInterface> getOldSources()
protected ReplicationSourceInterface getReplicationSource(Configuration conf, FileSystem fs, ReplicationSourceManager manager, ReplicationQueues replicationQueues, ReplicationPeers replicationPeers, Server server, java.lang.String peerId, java.util.UUID clusterId, ReplicationPeerConfig peerConfig, ReplicationPeer replicationPeer) throws java.io.IOException
conf
- the configuration to usefs
- the file system to usemanager
- the manager to useserver
- the server object for this region serverpeerId
- the id of the peer clusterjava.io.IOException
public void closeRecoveredQueue(ReplicationSourceInterface src)
src
- source to clearpublic void removePeer(java.lang.String id)
id
- The id of the peer clusterpublic void regionServerRemoved(java.lang.String regionserver)
ReplicationListener
regionServerRemoved
in interface ReplicationListener
regionserver
- the removed region serverpublic void peerRemoved(java.lang.String peerId)
ReplicationListener
peerRemoved
in interface ReplicationListener
peerId
- The peer id of the cluster that has been removedpublic void peerListChanged(java.util.List<java.lang.String> peerIds)
ReplicationListener
peerListChanged
in interface ReplicationListener
peerIds
- A list of all currently registered peer clusterspublic Path getOldLogDir()
public Path getLogDir()
public FileSystem getFs()
public java.lang.String getStats()
public void addHFileRefs(TableName tableName, byte[] family, java.util.List<Pair<Path,Path>> pairs) throws ReplicationException
ReplicationException
public void cleanUpHFileRefs(java.lang.String peerId, java.util.List<java.lang.String> files)