Skip to content

Commit

Permalink
Significant refactoring of util methods. Added helper classes Cluster…
Browse files Browse the repository at this point in the history
…Instance, StoreInstance, and StoreDefinitionUtil.

ClusterInstance wraps up a Cluster and List<StoreDefinition> object
and provides helper methods that operate on these objects together.

StoreInstance wraps up a Cluster and a StoreDefinition object
and provides helper methods that operate on these objects together.

StoreDefinitionUtil provides helper method that operate on either
StoreDefinition or List<StoreDefinition> objects.

Many methods have migrated out of RebalanceUtils into these new
classes.
  • Loading branch information
jayjwylie committed Mar 20, 2013
1 parent a345a05 commit 7e98b10
Show file tree
Hide file tree
Showing 21 changed files with 651 additions and 495 deletions.
2 changes: 1 addition & 1 deletion src/java/voldemort/client/protocol/admin/AdminClient.java
@@ -1,5 +1,5 @@
/*
* Copyright 2008-2013 LinkedIn, Inc
* Copyright 2008-2009 LinkedIn, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
Expand Down
4 changes: 2 additions & 2 deletions src/java/voldemort/client/rebalance/RebalanceCLI.java
Expand Up @@ -30,6 +30,7 @@
import voldemort.VoldemortException;
import voldemort.cluster.Cluster;
import voldemort.store.StoreDefinition;
import voldemort.utils.ClusterInstance;
import voldemort.utils.CmdUtils;
import voldemort.utils.Entropy;
import voldemort.utils.Pair;
Expand Down Expand Up @@ -293,8 +294,7 @@ public static void main(String[] args) throws Exception {
}

if(options.has("analyze")) {
Pair<Double, String> analysis = RebalanceClusterUtils.analyzeBalanceVerbose(currentCluster,
storeDefs);
Pair<Double, String> analysis = new ClusterInstance(currentCluster, storeDefs).analyzeBalanceVerbose();
System.out.println(analysis.getSecond());
return;
}
Expand Down
5 changes: 3 additions & 2 deletions src/java/voldemort/client/rebalance/RebalanceController.java
Expand Up @@ -39,6 +39,7 @@
import voldemort.store.StoreDefinition;
import voldemort.utils.NodeUtils;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreDefinitionUtils;
import voldemort.utils.Time;
import voldemort.versioning.Versioned;
import voldemort.xml.ClusterMapper;
Expand Down Expand Up @@ -376,9 +377,9 @@ private void rebalancePerPartitionTransition(final OrderedClusterTransition orde
List<RebalancePartitionsInfo> rebalancePartitionPlanList = rebalancePartitionsInfoList;

// Split the store definitions
List<StoreDefinition> readOnlyStoreDefs = RebalanceUtils.filterStores(orderedClusterTransition.getStoreDefs(),
List<StoreDefinition> readOnlyStoreDefs = StoreDefinitionUtils.filterStores(orderedClusterTransition.getStoreDefs(),
true);
List<StoreDefinition> readWriteStoreDefs = RebalanceUtils.filterStores(orderedClusterTransition.getStoreDefs(),
List<StoreDefinition> readWriteStoreDefs = StoreDefinitionUtils.filterStores(orderedClusterTransition.getStoreDefs(),
false);
boolean hasReadOnlyStores = readOnlyStoreDefs != null && readOnlyStoreDefs.size() > 0;
boolean hasReadWriteStores = readWriteStoreDefs != null
Expand Down
Expand Up @@ -68,6 +68,7 @@
import voldemort.utils.Pair;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.ReflectUtils;
import voldemort.utils.StoreInstance;
import voldemort.utils.Utils;
import voldemort.versioning.ObsoleteVersionException;
import voldemort.versioning.VectorClock;
Expand Down Expand Up @@ -1087,7 +1088,7 @@ public VAdminProto.DeletePartitionEntriesResponse handleDeletePartitionEntries(V
ByteArray key = entry.getFirst();
Versioned<byte[]> value = entry.getSecond();
throttler.maybeThrottle(key.length() + valueSize(value));
if(RebalanceUtils.checkKeyBelongsToPartition(metadataStore.getNodeId(),
if(StoreInstance.checkKeyBelongsToPartition(metadataStore.getNodeId(),
key.get(),
replicaToPartitionList,
request.hasInitialCluster() ? new ClusterMapper().readCluster(new StringReader(request.getInitialCluster()))
Expand Down
Expand Up @@ -16,7 +16,7 @@
import voldemort.utils.ByteArray;
import voldemort.utils.ClosableIterator;
import voldemort.utils.NetworkClassLoader;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;
import voldemort.utils.Time;
import voldemort.versioning.Versioned;

Expand Down Expand Up @@ -67,7 +67,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,

if(!fetchOrphaned) {
// normal code path
if(RebalanceUtils.checkKeyBelongsToPartition(nodeId,
if(StoreInstance.checkKeyBelongsToPartition(nodeId,
key.get(),
replicaToPartitionList,
initialCluster,
Expand All @@ -76,7 +76,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
}
} else {
// orphaned fetches
if(!RebalanceUtils.checkKeyBelongsToNode(key.get(), nodeId, initialCluster, storeDef)) {
if(!StoreInstance.checkKeyBelongsToNode(key.get(), nodeId, initialCluster, storeDef)) {
entryAccepted = true;
}
}
Expand Down
Expand Up @@ -15,7 +15,7 @@
import voldemort.utils.ByteArray;
import voldemort.utils.ClosableIterator;
import voldemort.utils.NetworkClassLoader;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;

import com.google.protobuf.Message;

Expand Down Expand Up @@ -58,7 +58,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
boolean keyAccepted = false;
if(!fetchOrphaned) {
// normal code path
if(RebalanceUtils.checkKeyBelongsToPartition(nodeId,
if(StoreInstance.checkKeyBelongsToPartition(nodeId,
key.get(),
replicaToPartitionList,
initialCluster,
Expand All @@ -69,7 +69,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
}

} else {
if(!RebalanceUtils.checkKeyBelongsToNode(key.get(), nodeId, initialCluster, storeDef)) {
if(!StoreInstance.checkKeyBelongsToNode(key.get(), nodeId, initialCluster, storeDef)) {
keyAccepted = true;
}
}
Expand Down
Expand Up @@ -36,7 +36,7 @@
import voldemort.utils.ClosableIterator;
import voldemort.utils.NetworkClassLoader;
import voldemort.utils.Pair;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;
import voldemort.utils.Time;
import voldemort.versioning.Versioned;

Expand Down Expand Up @@ -106,7 +106,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
// Check the current node contains the partition as the
// requested replicatype
if(!fetchedPartitions.contains(currentPartition)
&& RebalanceUtils.checkPartitionBelongsToNode(currentPartition,
&& StoreInstance.checkPartitionBelongsToNode(currentPartition,
currentReplicaType,
nodeId,
initialCluster,
Expand Down
Expand Up @@ -35,7 +35,7 @@
import voldemort.utils.ByteArray;
import voldemort.utils.ClosableIterator;
import voldemort.utils.NetworkClassLoader;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;
import voldemort.utils.Time;

import com.google.protobuf.Message;
Expand Down Expand Up @@ -104,7 +104,7 @@ public StreamRequestHandlerState handleRequest(DataInputStream inputStream,
// Check the current node contains the partition as the
// requested replicatype
if(!fetchedPartitions.contains(currentPartition)
&& RebalanceUtils.checkPartitionBelongsToNode(currentPartition,
&& StoreInstance.checkPartitionBelongsToNode(currentPartition,
currentReplicaType,
nodeId,
initialCluster,
Expand Down
4 changes: 2 additions & 2 deletions src/java/voldemort/server/rebalance/RebalancerState.java
Expand Up @@ -26,7 +26,7 @@
import voldemort.serialization.json.JsonReader;
import voldemort.serialization.json.JsonWriter;
import voldemort.store.metadata.MetadataStore;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
Expand Down Expand Up @@ -103,7 +103,7 @@ public RebalancePartitionsInfo find(String storeName,

// If yes, check if the key belongs to one of the partitions
// being moved
if(RebalanceUtils.checkKeyBelongsToPartition(keyPartitions,
if(StoreInstance.checkKeyBelongsToPartition(keyPartitions,
nodePartitions,
info.getReplicaToAddPartitionList(storeName))) {
return info;
Expand Down
Expand Up @@ -51,6 +51,7 @@
import voldemort.utils.ClosableIterator;
import voldemort.utils.Pair;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreInstance;
import voldemort.versioning.Versioned;

import com.google.common.collect.HashMultimap;
Expand Down Expand Up @@ -329,7 +330,7 @@ private void fetchEntriesForStealers(StorageEngine<ByteArray, byte[], byte[]> st
while(running.get() && keys.hasNext()) {
ByteArray key = keys.next();
scanned++;
List<Integer> nodeIds = RebalanceUtils.checkKeyBelongsToPartition(key.get(),
List<Integer> nodeIds = StoreInstance.checkKeyBelongsToPartition(key.get(),
optimizedStealerNodeToMappingTuples,
targetCluster,
storeDef);
Expand Down Expand Up @@ -377,7 +378,7 @@ private void fetchEntriesForStealersPartitionScan(StorageEngine<ByteArray, byte[
// check if all the partitions being requested are present in the
// current node
for(Integer partition: partitionsToDonate) {
if(!RebalanceUtils.checkPartitionBelongsToNode(partition,
if(!StoreInstance.checkPartitionBelongsToNode(partition,
voldemortConfig.getNodeId(),
initialCluster,
storeDef)) {
Expand All @@ -397,7 +398,7 @@ private void fetchEntriesForStealersPartitionScan(StorageEngine<ByteArray, byte[
Versioned<byte[]> value = entry.getSecond();

scanned++;
List<Integer> nodeIds = RebalanceUtils.checkKeyBelongsToPartition(key.get(),
List<Integer> nodeIds = StoreInstance.checkKeyBelongsToPartition(key.get(),
optimizedStealerNodeToMappingTuples,
targetCluster,
storeDef);
Expand Down
4 changes: 2 additions & 2 deletions src/java/voldemort/store/system/SystemStoreConstants.java
Expand Up @@ -20,7 +20,7 @@
import java.util.List;

import voldemort.store.StoreDefinition;
import voldemort.utils.RebalanceUtils;
import voldemort.utils.StoreDefinitionUtils;
import voldemort.xml.StoreDefinitionsMapper;

/**
Expand Down Expand Up @@ -88,6 +88,6 @@ public static List<StoreDefinition> getAllSystemStoreDefs() {

public static StoreDefinition getSystemStoreDef(String name) {
List<StoreDefinition> allDefs = getAllSystemStoreDefs();
return RebalanceUtils.getStoreDefinitionWithName(allDefs, name);
return StoreDefinitionUtils.getStoreDefinitionWithName(allDefs, name);
}
}

0 comments on commit 7e98b10

Please sign in to comment.