Skip to content

Commit

Permalink
Fix to store routing plan to correctly track zone-primaries per-node.
Browse files Browse the repository at this point in the history
  • Loading branch information
jayjwylie committed Jun 20, 2013
1 parent 8bc5e17 commit ad4b726
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/java/voldemort/routing/StoreRoutingPlan.java
Expand Up @@ -65,13 +65,20 @@ public StoreRoutingPlan(Cluster cluster, StoreDefinition storeDefinition) {
List<Integer> naryPartitionIds = getReplicatingPartitionList(masterPartitionId);
for(int naryPartitionId: naryPartitionIds) {
int naryNodeId = getNodeIdForPartitionId(naryPartitionId);
nodeIdToNaryPartitionMap.get(naryNodeId).add(masterPartitionId);
int naryZoneId = cluster.getNodeById(naryNodeId).getZoneId();
if(getZoneNaryForNodesPartition(naryZoneId, naryNodeId, naryPartitionId) == 0) {
nodeIdToZonePrimaryMap.get(naryNodeId).add(masterPartitionId);
this.nodeIdToNaryPartitionMap.get(naryNodeId).add(masterPartitionId);
}
}
for(int nodeId: cluster.getNodeIds()) {
int naryZoneId = cluster.getNodeById(nodeId).getZoneId();
List<Integer> naryPartitionIds = this.nodeIdToNaryPartitionMap.get(nodeId);
List<Integer> zoneNAries = this.nodeIdToZonePrimaryMap.get(nodeId);
for(int naryPartitionId: naryPartitionIds) {
if(getZoneNaryForNodesPartition(naryZoneId, nodeId, naryPartitionId) == 0) {
zoneNAries.add(naryPartitionId);
}
}
}

}

public Cluster getCluster() {
Expand Down Expand Up @@ -307,9 +314,9 @@ public int getZoneNaryForNodesPartition(int zoneId, int nodeId, int partitionId)
// zone
if(replicatingNode.getZoneId() == zoneId) {
zoneNAry++;
if(replicatingNode.getId() == nodeId) {
return zoneNAry;
}
}
if(replicatingNodeId == nodeId) {
return zoneNAry;
}
}
if(zoneNAry > 0) {
Expand Down

0 comments on commit ad4b726

Please sign in to comment.