@InterfaceAudience.Private public class ReplicationPeerManager extends Object implements ConfigurationObserver
Used to add/remove a replication peer.
Implement ConfigurationObserver
mainly for recreating ReplicationPeerStorage
, for
supporting migrating across different replication peer storages without restarting master.
Modifier and Type | Class and Description |
---|---|
private static interface |
ReplicationPeerManager.ExceptionalRunnable |
(package private) static interface |
ReplicationPeerManager.ReplicationQueueStorageInitializer |
Modifier and Type | Field and Description |
---|---|
private org.apache.hbase.thirdparty.com.google.common.collect.ImmutableMap<SyncReplicationState,EnumSet<SyncReplicationState>> |
allowedTransition |
private String |
clusterId |
private org.apache.hadoop.conf.Configuration |
conf |
private org.apache.hadoop.fs.FileSystem |
fs |
private static org.slf4j.Logger |
LOG |
private ConcurrentMap<String,ReplicationPeerDescription> |
peers |
private ReplicationPeerStorage |
peerStorage |
private ReplicationQueueStorage |
queueStorage |
private ReplicationPeerManager.ReplicationQueueStorageInitializer |
queueStorageInitializer |
private ReplicationLogCleanerBarrier |
replicationLogCleanerBarrier |
private Semaphore |
syncReplicationPeerLock |
private ZKWatcher |
zk |
Constructor and Description |
---|
ReplicationPeerManager(org.apache.hadoop.fs.FileSystem fs,
ZKWatcher zk,
ReplicationPeerStorage peerStorage,
ReplicationQueueStorage queueStorage,
ConcurrentMap<String,ReplicationPeerDescription> peers,
org.apache.hadoop.conf.Configuration conf,
String clusterId,
ReplicationPeerManager.ReplicationQueueStorageInitializer queueStorageInitializer) |
private static final org.slf4j.Logger LOG
private volatile ReplicationPeerStorage peerStorage
private final ReplicationQueueStorage queueStorage
private final ConcurrentMap<String,ReplicationPeerDescription> peers
private final org.apache.hbase.thirdparty.com.google.common.collect.ImmutableMap<SyncReplicationState,EnumSet<SyncReplicationState>> allowedTransition
private final Semaphore syncReplicationPeerLock
private final ReplicationLogCleanerBarrier replicationLogCleanerBarrier
private volatile org.apache.hadoop.conf.Configuration conf
private final org.apache.hadoop.fs.FileSystem fs
private final ReplicationPeerManager.ReplicationQueueStorageInitializer queueStorageInitializer
ReplicationPeerManager(org.apache.hadoop.fs.FileSystem fs, ZKWatcher zk, ReplicationPeerStorage peerStorage, ReplicationQueueStorage queueStorage, ConcurrentMap<String,ReplicationPeerDescription> peers, org.apache.hadoop.conf.Configuration conf, String clusterId, ReplicationPeerManager.ReplicationQueueStorageInitializer queueStorageInitializer)
private void checkQueuesDeleted(String peerId) throws ReplicationException, DoNotRetryIOException
private void initializeQueueStorage() throws IOException
IOException
void preAddPeer(String peerId, ReplicationPeerConfig peerConfig) throws ReplicationException, IOException
ReplicationException
IOException
private ReplicationPeerDescription checkPeerExists(String peerId) throws DoNotRetryIOException
DoNotRetryIOException
private void checkPeerInDAStateIfSyncReplication(String peerId) throws DoNotRetryIOException
DoNotRetryIOException
ReplicationPeerConfig preRemovePeer(String peerId) throws DoNotRetryIOException
DoNotRetryIOException
void preEnablePeer(String peerId) throws DoNotRetryIOException
DoNotRetryIOException
void preDisablePeer(String peerId) throws DoNotRetryIOException
DoNotRetryIOException
ReplicationPeerDescription preUpdatePeerConfig(String peerId, ReplicationPeerConfig peerConfig) throws DoNotRetryIOException
DoNotRetryIOException
ReplicationPeerDescription preTransitPeerSyncReplicationState(String peerId, SyncReplicationState state) throws DoNotRetryIOException
DoNotRetryIOException
public void addPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled) throws ReplicationException
ReplicationException
public void removePeer(String peerId) throws ReplicationException
ReplicationException
private void setPeerState(String peerId, boolean enabled) throws ReplicationException
ReplicationException
public boolean getPeerState(String peerId) throws ReplicationException
ReplicationException
public void enablePeer(String peerId) throws ReplicationException
ReplicationException
public void disablePeer(String peerId) throws ReplicationException
ReplicationException
public void updatePeerConfig(String peerId, ReplicationPeerConfig peerConfig) throws ReplicationException
ReplicationException
public List<ReplicationPeerDescription> listPeers(Pattern pattern)
public Optional<ReplicationPeerConfig> getPeerConfig(String peerId)
void removeAllLastPushedSeqIds(String peerId) throws ReplicationException
ReplicationException
public void setPeerNewSyncReplicationState(String peerId, SyncReplicationState state) throws ReplicationException
ReplicationException
public void transitPeerSyncReplicationState(String peerId, SyncReplicationState newState) throws ReplicationException
ReplicationException
public void removeAllQueues(String peerId) throws ReplicationException
ReplicationException
public void removeAllQueuesAndHFileRefs(String peerId) throws ReplicationException
ReplicationException
private void checkPeerConfig(ReplicationPeerConfig peerConfig) throws DoNotRetryIOException
DoNotRetryIOException
private void checkPeerConfigForSyncReplication(ReplicationPeerConfig peerConfig) throws DoNotRetryIOException
DoNotRetryIOException
private void checkSyncReplicationPeerConfigConflict(ReplicationPeerConfig peerConfig) throws DoNotRetryIOException
DoNotRetryIOException
private void checkNamespacesAndTableCfsConfigConflict(Set<String> namespaces, Map<TableName,? extends Collection<String>> tableCfs) throws DoNotRetryIOException
Set a exclude namespace in the peer config means that all tables in this namespace can't be replicated to the peer cluster.
DoNotRetryIOException
private void checkConfiguredWALEntryFilters(ReplicationPeerConfig peerConfig) throws DoNotRetryIOException
DoNotRetryIOException
private void checkClusterKey(String clusterKey) throws DoNotRetryIOException
DoNotRetryIOException
private void checkSameClusterKey(String clusterKey) throws DoNotRetryIOException
DoNotRetryIOException
public List<String> getSerialPeerIdsBelongsTo(TableName tableName)
public ReplicationPeerStorage getPeerStorage()
public ReplicationQueueStorage getQueueStorage()
private static Pair<ReplicationQueueStorage,ReplicationPeerManager.ReplicationQueueStorageInitializer> createReplicationQueueStorage(MasterServices services) throws IOException
IOException
public static ReplicationPeerManager create(MasterServices services, String clusterId) throws ReplicationException, IOException
ReplicationException
IOException
private boolean isStringEquals(String s1, String s2)
StringUtils.equals(CharSequence, CharSequence)
directly.public boolean tryAcquireSyncReplicationPeerLock()
public void releaseSyncReplicationPeerLock()
public ReplicationLogCleanerBarrier getReplicationLogCleanerBarrier()
public void onConfigurationChange(org.apache.hadoop.conf.Configuration conf)
ConfigurationObserver
ConfigurationManager
object when the
Configuration
object is reloaded from disk.onConfigurationChange
in interface ConfigurationObserver
private ReplicationQueueData convert(ZKReplicationQueueStorageForMigration.ZkReplicationQueueData zkData)
private void migrateQueues(ZKReplicationQueueStorageForMigration oldQueueStorage) throws Exception
Exception
private void migrateLastPushedSeqIds(ZKReplicationQueueStorageForMigration oldQueueStorage) throws Exception
Exception
private void migrateHFileRefs(ZKReplicationQueueStorageForMigration oldQueueStorage) throws Exception
Exception
private CompletableFuture<?> runAsync(ReplicationPeerManager.ExceptionalRunnable task, ExecutorService executor)
CompletableFuture<?> migrateQueuesFromZk(ZKWatcher zookeeper, ExecutorService executor)
executor
.Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.