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 |
log
messenger
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, toString
callCallback, checkpoint, execute, execute, execute, getAppRequestTypes, getARARNodesAsString, getARRCNodesAsString, getCallback, getCoordinatorRequestTypes, getMessenger, getMutualAuthAppRequestTypes, getMyID, getRequest, getRequest, getRequest, handleIncoming, hasLargeCheckpoints, registerCoordination, restore, sendAllLazy, setCallback, setLargeCheckpoints, setMessenger, setStopCallback
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getMutualAuthRequestTypes, getServerAuthRequestTypes
protected 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
AbstractReplicaCoordinator
coordinateRequest
in interface ReplicaCoordinator<NodeIDType>
coordinateRequest
in class PaxosReplicaCoordinator<NodeIDType>
java.io.IOException
RequestParseException
public 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)
ReplicaCoordinator
createReplicaGroup
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)
ReplicaCoordinator
getReplicaGroup
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)
Reconfigurable
deleteFinalState
in interface Reconfigurable
deleteFinalState
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.InterruptedException
protected void notifyOutstanding(java.lang.String name)