Package org.apache.bookkeeper.meta
Class NullMetadataBookieDriver.NullLedgerUnderreplicationManager
- java.lang.Object
-
- org.apache.bookkeeper.meta.NullMetadataBookieDriver.NullLedgerUnderreplicationManager
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,LedgerUnderreplicationManager
- Enclosing class:
- NullMetadataBookieDriver
public static class NullMetadataBookieDriver.NullLedgerUnderreplicationManager extends java.lang.Object implements LedgerUnderreplicationManager
A no-op implementation of LedgerUnderreplicationManager.
-
-
Constructor Summary
Constructors Constructor Description NullLedgerUnderreplicationManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
acquireUnderreplicatedLedger(long ledgerId)
void
close()
Release all resources held by the ledger underreplication manager.void
disableLedgerReplication()
Stop ledger replication.void
enableLedgerReplication()
Resuming ledger replication.long
getCheckAllLedgersCTime()
Getter for the CheckAllLedgers last executed ctime.long
getLedgerToRereplicate()
Acquire a underreplicated ledger for rereplication.UnderreplicatedLedger
getLedgerUnreplicationInfo(long ledgerId)
Get the UnderreplicatedLedger info if this ledger is marked underreplicated otherwise it returns null.int
getLostBookieRecoveryDelay()
Getter for the lostBookieRecoveryDelay.long
getPlacementPolicyCheckCTime()
Getter for the PlacementPolicyCheck last executed ctime.long
getReplicasCheckCTime()
Getter for the ReplicasCheck last executed ctime.java.lang.String
getReplicationWorkerIdRereplicatingLedger(long ledgerId)
If a replicationworker has acquired lock on an underreplicated ledger, then getReplicationWorkerIdRereplicatingLedger should return ReplicationWorkerId (BookieId) of the ReplicationWorker that is holding lock.boolean
initializeLostBookieRecoveryDelay(int lostBookieRecoveryDelay)
Creates the zNode for lostBookieRecoveryDelay with the specified value and returns true.boolean
isLedgerBeingReplicated(long ledgerId)
Check whether the ledger is being replicated by any bookie.boolean
isLedgerReplicationEnabled()
Check whether the ledger replication is enabled or not.java.util.Iterator<UnderreplicatedLedger>
listLedgersToRereplicate(java.util.function.Predicate<java.util.List<java.lang.String>> predicate)
Get a list of all the underreplicated ledgers which have been marked for rereplication, filtered by the predicate on the missing replicas list.void
markLedgerReplicated(long ledgerId)
Mark a ledger as fully replicated.java.util.concurrent.CompletableFuture<java.lang.Void>
markLedgerUnderreplicatedAsync(long ledgerId, java.util.Collection<java.lang.String> missingReplicas)
Mark a ledger as underreplicated with missing bookies.void
notifyLedgerReplicationEnabled(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Receive notification asynchronously when the ledger replication process is enabled.void
notifyLostBookieRecoveryDelayChanged(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Receive notification asynchronously when the lostBookieRecoveryDelay value is Changed.void
notifyUnderReplicationLedgerChanged(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Receive notification asynchronously when the num of under-replicated ledgers Changed.long
pollLedgerToRereplicate()
Poll for a underreplicated ledger to rereplicate.void
releaseUnderreplicatedLedger(long ledgerId)
Release a previously acquired ledger.void
setCheckAllLedgersCTime(long checkAllLedgersCTime)
Setter for the CheckAllLedgers last executed ctime.void
setLostBookieRecoveryDelay(int lostBookieRecoveryDelay)
Setter for the lostBookieRecoveryDelay znode.void
setPlacementPolicyCheckCTime(long placementPolicyCheckCTime)
Setter for the PlacementPolicyCheck last executed ctime.void
setReplicasCheckCTime(long replicasCheckCTime)
Setter for the ReplicasCheck last executed ctime.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.bookkeeper.meta.LedgerUnderreplicationManager
markLedgerUnderreplicated
-
-
-
-
Method Detail
-
isLedgerBeingReplicated
public boolean isLedgerBeingReplicated(long ledgerId) throws ReplicationException
Description copied from interface:LedgerUnderreplicationManager
Check whether the ledger is being replicated by any bookie.- Specified by:
isLedgerBeingReplicated
in interfaceLedgerUnderreplicationManager
- Throws:
ReplicationException
-
markLedgerUnderreplicatedAsync
public java.util.concurrent.CompletableFuture<java.lang.Void> markLedgerUnderreplicatedAsync(long ledgerId, java.util.Collection<java.lang.String> missingReplicas)
Description copied from interface:LedgerUnderreplicationManager
Mark a ledger as underreplicated with missing bookies. The replication should then check which fragments are underreplicated and rereplicate them.- Specified by:
markLedgerUnderreplicatedAsync
in interfaceLedgerUnderreplicationManager
- Parameters:
ledgerId
- ledger idmissingReplicas
- missing replicas- Returns:
- a future presents the mark result.
-
markLedgerReplicated
public void markLedgerReplicated(long ledgerId) throws ReplicationException.UnavailableException
Description copied from interface:LedgerUnderreplicationManager
Mark a ledger as fully replicated. If the ledger is not already marked as underreplicated, this is a noop.- Specified by:
markLedgerReplicated
in interfaceLedgerUnderreplicationManager
- Throws:
ReplicationException.UnavailableException
-
getLedgerUnreplicationInfo
public UnderreplicatedLedger getLedgerUnreplicationInfo(long ledgerId) throws ReplicationException.UnavailableException
Description copied from interface:LedgerUnderreplicationManager
Get the UnderreplicatedLedger info if this ledger is marked underreplicated otherwise it returns null.- Specified by:
getLedgerUnreplicationInfo
in interfaceLedgerUnderreplicationManager
- Parameters:
ledgerId
- ledger id- Returns:
- the UnderreplicatedLedger info instance if this ledger is marked underreplicated otherwise it returns null.
- Throws:
ReplicationException.UnavailableException
-
listLedgersToRereplicate
public java.util.Iterator<UnderreplicatedLedger> listLedgersToRereplicate(java.util.function.Predicate<java.util.List<java.lang.String>> predicate)
Description copied from interface:LedgerUnderreplicationManager
Get a list of all the underreplicated ledgers which have been marked for rereplication, filtered by the predicate on the missing replicas list.Missing replicas list of an underreplicated ledger is the list of the bookies which are part of the ensemble of this ledger and are currently unavailable/down.
- Specified by:
listLedgersToRereplicate
in interfaceLedgerUnderreplicationManager
- Parameters:
predicate
- filter to use while listing under replicated ledgers. 'null' if filtering is not required- Returns:
- an iterator which returns underreplicated ledgers.
-
getLedgerToRereplicate
public long getLedgerToRereplicate() throws ReplicationException.UnavailableException
Description copied from interface:LedgerUnderreplicationManager
Acquire a underreplicated ledger for rereplication. The ledger should be locked, so that no other agent will receive the ledger from this call. The ledger should remain locked until either #markLedgerComplete or #releaseLedger are called. This call is blocking, so will not return until a ledger is available for rereplication.- Specified by:
getLedgerToRereplicate
in interfaceLedgerUnderreplicationManager
- Throws:
ReplicationException.UnavailableException
-
pollLedgerToRereplicate
public long pollLedgerToRereplicate() throws ReplicationException.UnavailableException
Description copied from interface:LedgerUnderreplicationManager
Poll for a underreplicated ledger to rereplicate.- Specified by:
pollLedgerToRereplicate
in interfaceLedgerUnderreplicationManager
- Returns:
- the ledgerId, or -1 if none are available
- Throws:
ReplicationException.UnavailableException
- See Also:
LedgerUnderreplicationManager.getLedgerToRereplicate()
-
acquireUnderreplicatedLedger
public void acquireUnderreplicatedLedger(long ledgerId) throws ReplicationException
- Specified by:
acquireUnderreplicatedLedger
in interfaceLedgerUnderreplicationManager
- Throws:
ReplicationException
-
releaseUnderreplicatedLedger
public void releaseUnderreplicatedLedger(long ledgerId)
Description copied from interface:LedgerUnderreplicationManager
Release a previously acquired ledger. This allows others to acquire the ledger.- Specified by:
releaseUnderreplicatedLedger
in interfaceLedgerUnderreplicationManager
-
close
public void close()
Description copied from interface:LedgerUnderreplicationManager
Release all resources held by the ledger underreplication manager.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceLedgerUnderreplicationManager
-
disableLedgerReplication
public void disableLedgerReplication()
Description copied from interface:LedgerUnderreplicationManager
Stop ledger replication. Currently running ledger rereplication tasks will be continued and will be stopped from next task. This will block ledger replication#Auditor
andLedgerUnderreplicationManager.getLedgerToRereplicate()
tasks.- Specified by:
disableLedgerReplication
in interfaceLedgerUnderreplicationManager
-
enableLedgerReplication
public void enableLedgerReplication()
Description copied from interface:LedgerUnderreplicationManager
Resuming ledger replication. This will allow ledger replication#Auditor
andLedgerUnderreplicationManager.getLedgerToRereplicate()
tasks to continue.- Specified by:
enableLedgerReplication
in interfaceLedgerUnderreplicationManager
-
isLedgerReplicationEnabled
public boolean isLedgerReplicationEnabled()
Description copied from interface:LedgerUnderreplicationManager
Check whether the ledger replication is enabled or not. This will return true if the ledger replication is enabled, otherwise return false.- Specified by:
isLedgerReplicationEnabled
in interfaceLedgerUnderreplicationManager
- Returns:
- - return true if it is enabled otherwise return false
-
notifyLedgerReplicationEnabled
public void notifyLedgerReplicationEnabled(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Description copied from interface:LedgerUnderreplicationManager
Receive notification asynchronously when the ledger replication process is enabled.- Specified by:
notifyLedgerReplicationEnabled
in interfaceLedgerUnderreplicationManager
- Parameters:
cb
- - callback implementation to receive the notification
-
initializeLostBookieRecoveryDelay
public boolean initializeLostBookieRecoveryDelay(int lostBookieRecoveryDelay)
Description copied from interface:LedgerUnderreplicationManager
Creates the zNode for lostBookieRecoveryDelay with the specified value and returns true. If the node is already existing, then it returns false.- Specified by:
initializeLostBookieRecoveryDelay
in interfaceLedgerUnderreplicationManager
- Returns:
- true if it succeeds in creating zNode for lostBookieRecoveryDelay, false if it is already existing
-
setLostBookieRecoveryDelay
public void setLostBookieRecoveryDelay(int lostBookieRecoveryDelay)
Description copied from interface:LedgerUnderreplicationManager
Setter for the lostBookieRecoveryDelay znode.- Specified by:
setLostBookieRecoveryDelay
in interfaceLedgerUnderreplicationManager
-
getLostBookieRecoveryDelay
public int getLostBookieRecoveryDelay()
Description copied from interface:LedgerUnderreplicationManager
Getter for the lostBookieRecoveryDelay.- Specified by:
getLostBookieRecoveryDelay
in interfaceLedgerUnderreplicationManager
- Returns:
- the int value of lostBookieRecoveryDelay
-
setCheckAllLedgersCTime
public void setCheckAllLedgersCTime(long checkAllLedgersCTime)
Description copied from interface:LedgerUnderreplicationManager
Setter for the CheckAllLedgers last executed ctime.- Specified by:
setCheckAllLedgersCTime
in interfaceLedgerUnderreplicationManager
-
getCheckAllLedgersCTime
public long getCheckAllLedgersCTime()
Description copied from interface:LedgerUnderreplicationManager
Getter for the CheckAllLedgers last executed ctime.- Specified by:
getCheckAllLedgersCTime
in interfaceLedgerUnderreplicationManager
- Returns:
- the long value of checkAllLedgersCTime
-
setPlacementPolicyCheckCTime
public void setPlacementPolicyCheckCTime(long placementPolicyCheckCTime)
Description copied from interface:LedgerUnderreplicationManager
Setter for the PlacementPolicyCheck last executed ctime.- Specified by:
setPlacementPolicyCheckCTime
in interfaceLedgerUnderreplicationManager
-
getPlacementPolicyCheckCTime
public long getPlacementPolicyCheckCTime()
Description copied from interface:LedgerUnderreplicationManager
Getter for the PlacementPolicyCheck last executed ctime.- Specified by:
getPlacementPolicyCheckCTime
in interfaceLedgerUnderreplicationManager
- Returns:
- the long value of placementPolicyCheckCTime
-
setReplicasCheckCTime
public void setReplicasCheckCTime(long replicasCheckCTime)
Description copied from interface:LedgerUnderreplicationManager
Setter for the ReplicasCheck last executed ctime.- Specified by:
setReplicasCheckCTime
in interfaceLedgerUnderreplicationManager
-
getReplicasCheckCTime
public long getReplicasCheckCTime()
Description copied from interface:LedgerUnderreplicationManager
Getter for the ReplicasCheck last executed ctime.- Specified by:
getReplicasCheckCTime
in interfaceLedgerUnderreplicationManager
- Returns:
- the long value of replicasCheckCTime
-
notifyLostBookieRecoveryDelayChanged
public void notifyLostBookieRecoveryDelayChanged(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Description copied from interface:LedgerUnderreplicationManager
Receive notification asynchronously when the lostBookieRecoveryDelay value is Changed.- Specified by:
notifyLostBookieRecoveryDelayChanged
in interfaceLedgerUnderreplicationManager
-
getReplicationWorkerIdRereplicatingLedger
public java.lang.String getReplicationWorkerIdRereplicatingLedger(long ledgerId) throws ReplicationException.UnavailableException
Description copied from interface:LedgerUnderreplicationManager
If a replicationworker has acquired lock on an underreplicated ledger, then getReplicationWorkerIdRereplicatingLedger should return ReplicationWorkerId (BookieId) of the ReplicationWorker that is holding lock. If lock for the underreplicated ledger is not yet acquired or if it is released then it is supposed to return null.- Specified by:
getReplicationWorkerIdRereplicatingLedger
in interfaceLedgerUnderreplicationManager
- Returns:
- Throws:
ReplicationException.UnavailableException
-
notifyUnderReplicationLedgerChanged
public void notifyUnderReplicationLedgerChanged(BookkeeperInternalCallbacks.GenericCallback<java.lang.Void> cb)
Description copied from interface:LedgerUnderreplicationManager
Receive notification asynchronously when the num of under-replicated ledgers Changed.- Specified by:
notifyUnderReplicationLedgerChanged
in interfaceLedgerUnderreplicationManager
-
-