NodeIDType - public class RepliconfigurableReconfiguratorDB<NodeIDType> extends PaxosReplicaCoordinator<NodeIDType>
We need this class to extend both PaxosReplicationCoordinator and AbstractReconfiguratorDB, so we use an interface for the latter.
| Modifier and Type | Field and Description |
|---|---|
protected AbstractReconfiguratorDB<NodeIDType> |
app |
protected ConsistentReconfigurableNodeConfig<NodeIDType> |
consistentNodeConfig |
logmessenger| Constructor and Description |
|---|
RepliconfigurableReconfiguratorDB(AbstractReconfiguratorDB<NodeIDType> app,
NodeIDType myID,
ConsistentReconfigurableNodeConfig<NodeIDType> consistentNodeConfig,
Messenger<NodeIDType,org.json.JSONObject> niot,
boolean startCleanSlate) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addToOutstanding(java.lang.String name) |
protected boolean |
amAffected(NodeIDType node) |
protected boolean |
changeActiveDBNodeConfig(int version) |
protected boolean |
changeDBNodeConfig(int version) |
protected void |
close() |
boolean |
coordinateRequest(Request request,
ExecutedCallback callback)
Start of abstract methods
|
boolean |
coordinateRequestSuppressExceptions(Request request,
ExecutedCallback callback) |
boolean |
createReplicaGroup(java.lang.String groupName,
int epoch,
java.lang.String state,
java.util.Set<NodeIDType> nodes)
This method should return true if the replica group is successfully
created or one already exists with the same set of nodes.
|
protected void |
delayedDeleteComplete() |
boolean |
deleteFinalState(java.lang.String rcGroupName,
int epoch)
Garbage-collects the final state for name, epoch.
|
java.util.Set<NodeIDType> |
filterDeletedActives(java.util.Set<NodeIDType> toFilter) |
protected void |
garbageCollectDeletedNode(NodeIDType node) |
protected void |
garbageCollectOldFileSystemBasedCheckpoints() |
protected java.util.Set<NodeIDType> |
getActiveReplicas(java.lang.String name) |
protected int |
getCurNCEpoch() |
protected java.lang.String |
getDemandStats(java.lang.String name) |
protected java.util.Set<java.lang.String> |
getMergeList(java.lang.String newRCGroupName)
Reconfigurator reconfiguration methods
|
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> |
getMergeLists() |
protected ConsistentHashing<NodeIDType> |
getNewConsistentHashRing() |
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> |
getNewGroup(java.lang.String oldRCNode) |
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> |
getNewRCGroups() |
protected java.util.Set<java.lang.String> |
getNodeSetAsStringSet(java.util.Set<NodeIDType> nodeSet) |
protected ConsistentHashing<NodeIDType> |
getOldConsistentHashRing() |
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> |
getOldGroup(java.lang.String newRCNode) |
protected java.lang.String |
getOldGroupName(java.lang.String name) |
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> |
getOldRCGroups() |
protected java.lang.String[] |
getPendingReconfigurations() |
java.lang.String |
getRCGroupName(NodeIDType node)
RC group name of node is just node.toString().
|
protected java.lang.String |
getRCGroupName(java.lang.String serviceName) |
ReconfigurationRecord<NodeIDType> |
getReconfigurationRecord(java.lang.String name)
Allows uncoordinated access to DB state.
|
java.util.Set<NodeIDType> |
getReplicaGroup(java.lang.String serviceName)
This method must return the replica group that was most recently
successfully created for the serviceName using createReplicaGroup.
|
protected boolean |
isBeingAdded(java.lang.String curRCGroup) |
protected boolean |
isBeingDeleted(java.lang.String curRCGroup) |
protected boolean |
isNCRecord(java.lang.String name) |
boolean |
isRCGroupName(java.lang.String name)
Checks if RC group name is name itself by consulting the soft copy of
node config.
|
protected void |
notifyOutstanding(java.lang.String name) |
protected boolean |
outstandingContains(java.lang.String name) |
void |
removePending(java.lang.String name) |
protected void |
setOutstanding(NodeIDType active) |
protected java.util.Set<NodeIDType> |
setRCEpochs(java.util.Set<NodeIDType> addNodes,
java.util.Set<NodeIDType> deleteNodes) |
protected void |
setRecovering(boolean b) |
protected void |
waitOutstanding(int max) |
coordinateRequest, createReplicaGroup, deleteReplicaGroup, existsOrHigher, forceCheckpoint, getEpoch, getFinalState, getFinalStateContainer, getRequestTypes, getStopRequest, putInitialState, removeDead, setOutOfOrderLimit, stop, stopFailureMonitoring, toStringcallCallback, checkpoint, execute, execute, execute, getAppRequestTypes, getARARNodesAsString, getARRCNodesAsString, getCallback, getCoordinatorRequestTypes, getMessenger, getMutualAuthAppRequestTypes, getMyID, getRequest, getRequest, getRequest, handleIncoming, hasLargeCheckpoints, registerCoordination, restore, sendAllLazy, setCallback, setLargeCheckpoints, setMessenger, setStopCallbackclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetMutualAuthRequestTypes, getServerAuthRequestTypesprotected final AbstractReconfiguratorDB<NodeIDType> app
protected final ConsistentReconfigurableNodeConfig<NodeIDType> consistentNodeConfig
public RepliconfigurableReconfiguratorDB(AbstractReconfiguratorDB<NodeIDType> app, NodeIDType myID, ConsistentReconfigurableNodeConfig<NodeIDType> consistentNodeConfig, Messenger<NodeIDType,org.json.JSONObject> niot, boolean startCleanSlate)
app - myID - consistentNodeConfig - niot - startCleanSlate - protected java.util.Set<NodeIDType> getActiveReplicas(java.lang.String name)
public boolean coordinateRequest(Request request, ExecutedCallback callback) throws java.io.IOException, RequestParseException
AbstractReplicaCoordinatorcoordinateRequest in interface ReplicaCoordinator<NodeIDType>coordinateRequest in class PaxosReplicaCoordinator<NodeIDType>java.io.IOExceptionRequestParseExceptionpublic boolean coordinateRequestSuppressExceptions(Request request, ExecutedCallback callback)
request - callback - coordinateRequest(Request,ExecutedCallback).public ReconfigurationRecord<NodeIDType> getReconfigurationRecord(java.lang.String name)
name - name.public boolean createReplicaGroup(java.lang.String groupName,
int epoch,
java.lang.String state,
java.util.Set<NodeIDType> nodes)
ReplicaCoordinatorcreateReplicaGroup in interface ReplicaCoordinator<NodeIDType>createReplicaGroup in class PaxosReplicaCoordinator<NodeIDType>protected java.lang.String getDemandStats(java.lang.String name)
protected java.lang.String[] getPendingReconfigurations()
protected void close()
public java.util.Set<NodeIDType> getReplicaGroup(java.lang.String serviceName)
ReplicaCoordinatorgetReplicaGroup in interface ReplicaCoordinator<NodeIDType>getReplicaGroup in class PaxosReplicaCoordinator<NodeIDType>serviceName.protected java.lang.String getRCGroupName(java.lang.String serviceName)
protected void setRecovering(boolean b)
protected java.util.Set<java.lang.String> getMergeList(java.lang.String newRCGroupName)
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getMergeLists()
protected boolean amAffected(NodeIDType node)
protected java.util.Set<NodeIDType> setRCEpochs(java.util.Set<NodeIDType> addNodes, java.util.Set<NodeIDType> deleteNodes)
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> getOldRCGroups()
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> getNewRCGroups()
public boolean isRCGroupName(java.lang.String name)
name - name represents a reconfigurator group name.public final java.lang.String getRCGroupName(NodeIDType node)
node - node.protected java.lang.String getOldGroupName(java.lang.String name)
protected ConsistentHashing<NodeIDType> getOldConsistentHashRing()
protected ConsistentHashing<NodeIDType> getNewConsistentHashRing()
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> getOldGroup(java.lang.String newRCNode)
protected java.util.Set<java.lang.String> getNodeSetAsStringSet(java.util.Set<NodeIDType> nodeSet)
protected java.util.Map<java.lang.String,java.util.Set<NodeIDType>> getNewGroup(java.lang.String oldRCNode)
protected boolean changeDBNodeConfig(int version)
protected boolean changeActiveDBNodeConfig(int version)
public boolean deleteFinalState(java.lang.String rcGroupName,
int epoch)
ReconfigurabledeleteFinalState in interface ReconfigurabledeleteFinalState in class PaxosReplicaCoordinator<NodeIDType>name:epoch was deleted or did not
exist to begin with.protected boolean isBeingDeleted(java.lang.String curRCGroup)
protected boolean isBeingAdded(java.lang.String curRCGroup)
protected void delayedDeleteComplete()
protected int getCurNCEpoch()
protected void garbageCollectDeletedNode(NodeIDType node)
protected void garbageCollectOldFileSystemBasedCheckpoints()
protected boolean isNCRecord(java.lang.String name)
public void removePending(java.lang.String name)
name - protected void setOutstanding(NodeIDType active)
public java.util.Set<NodeIDType> filterDeletedActives(java.util.Set<NodeIDType> toFilter)
toFilter - WaitAckDropEpoch to avoid unnecessary message send
failures.protected boolean outstandingContains(java.lang.String name)
protected void addToOutstanding(java.lang.String name)
protected void waitOutstanding(int max)
throws java.lang.InterruptedException
java.lang.InterruptedExceptionprotected void notifyOutstanding(java.lang.String name)