Skip to content

Instantly share code, notes, and snippets.

@rsumbaly
Created April 19, 2011 00:02
Show Gist options
  • Save rsumbaly/926559 to your computer and use it in GitHub Desktop.
Save rsumbaly/926559 to your computer and use it in GitHub Desktop.
package voldemort;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import voldemort.cluster.Cluster;
import voldemort.cluster.Node;
import voldemort.routing.RoutingStrategy;
import voldemort.routing.RoutingStrategyFactory;
import voldemort.serialization.DefaultSerializerFactory;
import voldemort.serialization.Serializer;
import voldemort.store.StoreDefinition;
import voldemort.utils.RebalanceUtils;
import voldemort.xml.ClusterMapper;
import voldemort.xml.StoreDefinitionsMapper;
import com.google.common.collect.Sets;
public class CheckFiles {
public static void main(String args[]) throws IOException {
String clusterXml = args[0];
String storesXml = args[1];
Cluster cluster = new ClusterMapper().readCluster(new File(clusterXml));
List<StoreDefinition> storeDefs = new StoreDefinitionsMapper().readStoreList(new File(storesXml));
for(StoreDefinition storeDef: storeDefs) {
System.out.println("Working on store " + storeDef.getName());
Serializer<Integer> keySerializer = (Serializer<Integer>) new DefaultSerializerFactory().getSerializer(storeDef.getKeySerializer());
RoutingStrategy strategy = new RoutingStrategyFactory().updateRoutingStrategy(storeDef,
cluster);
HashSet<String> fileNamesOld[] = new HashSet[cluster.getNumberOfNodes()], fileNamesNew[] = new HashSet[cluster.getNumberOfNodes()];
for(Node node: cluster.getNodes()) {
fileNamesOld[node.getId()] = Sets.newHashSet();
fileNamesNew[node.getId()] = Sets.newHashSet();
}
Map<Integer, Integer> mapping = RebalanceUtils.getCurrentPartitionMapping(cluster);
for(int i = 0; i < 100000000; i++) {
List<Integer> partitions = strategy.getPartitionList(keySerializer.toBytes(i));
int replicaType = 0;
int masterReplica = partitions.get(0);
for(int partition: partitions) {
fileNamesOld[mapping.get(partition)].add(Integer.toString(partition) + "_"
+ Integer.toString(replicaType) + "_1");
fileNamesNew[mapping.get(partition)].add(Integer.toString(masterReplica) + "_"
+ Integer.toString(replicaType) + "_1");
replicaType++;
}
if(i % 1000 == 0) {
System.out.println("Done " + i);
}
}
System.out.println("--------OLD --------");
for(int nodeId = 0; nodeId < fileNamesOld.length; nodeId++) {
System.out.println("NODE ID " + nodeId + " - " + fileNamesOld[nodeId].size()
+ " - " + fileNamesOld[nodeId]);
}
System.out.println("--------NEW --------");
for(int nodeId = 0; nodeId < fileNamesNew.length; nodeId++) {
System.out.println("NODE ID " + nodeId + " - " + fileNamesNew[nodeId].size()
+ " - " + fileNamesNew[nodeId]);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment