diff --git a/src/org/apache/cassandra/service/BootstrapAndLbHelper.java b/src/org/apache/cassandra/service/BootstrapAndLbHelper.java deleted file mode 100644 index 79bcc17156..0000000000 --- a/src/org/apache/cassandra/service/BootstrapAndLbHelper.java +++ /dev/null @@ -1,64 +0,0 @@ - /** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.cassandra.service; - -import java.math.BigInteger; -import java.util.Iterator; -import java.util.List; - -import org.apache.cassandra.io.SSTable; -import org.apache.log4j.Logger; - -public final class BootstrapAndLbHelper -{ - private static final Logger logger_ = Logger.getLogger(BootstrapAndLbHelper.class); - private static List getIndexedPrimaryKeys() - { - List indexedPrimaryKeys = SSTable.getIndexedKeys(); - Iterator it = indexedPrimaryKeys.iterator(); - - while ( it.hasNext() ) - { - String key = it.next(); - if ( !StorageService.instance().isPrimary(key) ) - { - it.remove(); - } - } - return indexedPrimaryKeys; - } - - /** - * Given the number of keys that need to be transferred say, 1000 - * and given the smallest key stored we need the hash of the 1000th - * key greater than the smallest key in the sorted order in the primary - * range. - * - * @param keyCount number of keys after which token is required. - * @return token. - */ - public static BigInteger getTokenBasedOnPrimaryCount(int keyCount) - { - List indexedPrimaryKeys = getIndexedPrimaryKeys(); - int index = keyCount / SSTable.indexInterval(); - String key = (index >= indexedPrimaryKeys.size()) ? indexedPrimaryKeys.get( indexedPrimaryKeys.size() - 1 ) : indexedPrimaryKeys.get(index); - logger_.debug("Hashing key " + key + " ..."); - return StorageService.instance().hash(key); - } -} diff --git a/src/org/apache/cassandra/service/StorageService.java b/src/org/apache/cassandra/service/StorageService.java index a0dd149f7f..8efc6e856f 100644 --- a/src/org/apache/cassandra/service/StorageService.java +++ b/src/org/apache/cassandra/service/StorageService.java @@ -1095,12 +1095,6 @@ public final class StorageService implements IEndPointStateChangeSubscriber, Sto doBootstrap(nodes); } - public String getAppropriateToken(int count) - { - BigInteger token = BootstrapAndLbHelper.getTokenBasedOnPrimaryCount(count); - return token.toString(); - } - public void doGC() { List tables = DatabaseDescriptor.getTables(); diff --git a/src/org/apache/cassandra/service/StorageServiceMBean.java b/src/org/apache/cassandra/service/StorageServiceMBean.java index 444113eb9e..b3a49a1537 100644 --- a/src/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/org/apache/cassandra/service/StorageServiceMBean.java @@ -55,16 +55,7 @@ public interface StorageServiceMBean * */ public void doGC(); - - /** - * Get the token such that the range of this node - * is split after count number of keys. - * @param count number of keys after which to generate - * token. - * @return appropriate token - */ - public String getAppropriateToken(int count); - + /** * Stream the files in the bootstrap directory over to the * node being bootstrapped. This is used in case of normal diff --git a/src/org/apache/cassandra/tools/ClusterTool.java b/src/org/apache/cassandra/tools/ClusterTool.java deleted file mode 100644 index aa94140c34..0000000000 --- a/src/org/apache/cassandra/tools/ClusterTool.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.apache.cassandra.tools; - -import java.io.IOException; -import java.math.BigInteger; -import java.net.InetAddress; - -import org.apache.cassandra.net.EndPoint; -import org.apache.cassandra.net.Message; -import org.apache.cassandra.net.MessagingService; -import org.apache.cassandra.service.StorageService; - - -public class ClusterTool -{ - public static final String SET_TOKEN = "settoken"; - public static final String HASH_KEY = "hash"; - public static final String BUILD_INDEX = "build_index"; - public static final String READ_TEST = "read_test"; - public static final String WRITE_TEST = "write_test"; - - public static void applyToken(String serverName, BigInteger token) throws IOException - { - try - { - EndPoint from = new EndPoint(InetAddress.getLocalHost().getHostName(), 7000); - System.out.println("Updating token of server " + serverName + " with token " + token); - Message message = new Message(from, "", StorageService.tokenVerbHandler_, new Object[]{ token.toByteArray() }); - EndPoint ep = new EndPoint(serverName, 7000); - MessagingService.getMessagingInstance().sendOneWay(message, ep); - Thread.sleep(1000); - System.out.println("Successfully calibrated " + serverName); - } - catch (Exception e) - { - e.printStackTrace(System.out); - } - } - - public static void printUsage() - { - System.out.println("Usage: java -jar "); - System.out.println("Commands:"); - System.out.println("\t" + SET_TOKEN + " "); - System.out.println("\t" + HASH_KEY + " "); - System.out.println("\t" + BUILD_INDEX + " "); - System.out.println("\t" + READ_TEST + " "); - System.out.println("\t" + WRITE_TEST + " "); - } - - public static void main(String[] args) throws Exception - { - if(args.length < 2) - { - printUsage(); - return; - } - - int argc = 0; - try - { - /* set the token for a particular node in the Cassandra cluster */ - if(SET_TOKEN.equals(args[argc])) - { - String serverName = args[argc + 1]; - BigInteger token = new BigInteger(args[argc + 2]); - //System.out.println("Calibrating " + serverName + " with token " + token); - applyToken(serverName, token); - } - /* Print the hash of a given key */ - else if(HASH_KEY.equals(args[argc])) - { - System.out.println("Hash = [" + StorageService.hash(args[argc + 1]) + "]"); - } - /* build indexes given the data file */ - else if(BUILD_INDEX.equals(args[argc])) - { - IndexBuilder.main(args); - } - /* test reads */ - else if(READ_TEST.equals(args[argc])) - { - System.out.println("Testing reads..."); - int numThreads = Integer.parseInt(args[argc + 1]); - int rpsPerThread = Integer.parseInt(args[argc + 2]); - String machinesToRead = args[argc + 3]; -// ReadTest.runReadTest(numThreads, rpsPerThread, machinesToRead); - } - /* test writes */ - else if(WRITE_TEST.equals(args[argc])) - { - System.out.println("Testing writes..."); - int numThreads = Integer.parseInt(args[argc + 1]); - int rpsPerThread = Integer.parseInt(args[argc + 2]); - String machinesToWrite = args[argc + 3]; -// WriteTest.runWriteTest(numThreads, rpsPerThread, machinesToWrite); - } - } catch(Exception e) - { - System.err.println("Exception " + e.getMessage()); - e.printStackTrace(System.err); - printUsage(); - } - - System.exit(0); - } - -} diff --git a/src/org/apache/cassandra/tools/FileSizeTokenGenerator.java b/src/org/apache/cassandra/tools/FileSizeTokenGenerator.java deleted file mode 100644 index 5d8c09f3cb..0000000000 --- a/src/org/apache/cassandra/tools/FileSizeTokenGenerator.java +++ /dev/null @@ -1,150 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.cassandra.tools; - -import java.io.File; -import java.io.IOException; -import java.math.BigInteger; - -import org.apache.cassandra.io.DataInputBuffer; -import org.apache.cassandra.io.DataOutputBuffer; -import org.apache.cassandra.io.IFileReader; -import org.apache.cassandra.io.SSTable; -import org.apache.cassandra.io.SequenceFile; -import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.utils.LogUtil; -import org.apache.log4j.Logger; -import org.apache.cassandra.io.*; -import org.apache.cassandra.utils.*; - -public class FileSizeTokenGenerator -{ - private static Logger logger_ = Logger.getLogger(IndexBuilder.class); - - public static void main(String[] args) - { - if ( args.length != 4 ) - { - System.out.println("Usage : java com.facebook.infrastructure.tools.IndexBuilder < split factor>"); - System.exit(1); - } - - try - { - int splitCount = Integer.parseInt(args[3]); - BigInteger l = new BigInteger(args[1]); - BigInteger h = new BigInteger(args[2]); - long totalSize = getTotalSize(args[0], l, h); - System.out.println(" Total Size : " + totalSize); - BigInteger[] tokens = generateTokens(args[0], l, h, totalSize, splitCount); - int i = 0 ; - for( BigInteger token : tokens) - { - System.out.println(i++ + " th Token " + token); - } - } - catch( Throwable th ) - { - logger_.warn(LogUtil.throwableToString(th)); - } - } - - private static long getTotalSize(String dataFile, BigInteger l , BigInteger h) throws IOException - { - final int bufferSize = 64*1024; - - IFileReader dataReader = SequenceFile.bufferedReader(dataFile, bufferSize); - DataOutputBuffer bufOut = new DataOutputBuffer(); - DataInputBuffer bufIn = new DataInputBuffer(); - long totalSize = 0; - try - { - while ( !dataReader.isEOF() ) - { - bufOut.reset(); - /* Record the position of the key. */ - dataReader.next(bufOut); - bufIn.reset(bufOut.getData(), bufOut.getLength()); - /* Key just read */ - String key = bufIn.readUTF(); - if ( !key.equals(SSTable.blockIndexKey_) && l.compareTo(StorageService.hash(key)) < 0 && h.compareTo(StorageService.hash(key)) > 0 ) - { - int sz = bufIn.readInt(); - byte[] keyData = new byte[sz]; - bufIn.read(keyData, 0, sz); - totalSize= totalSize + sz; - } - } - } - finally - { - dataReader.close(); - } - return totalSize; - } - - - private static BigInteger[] generateTokens(String dataFile,BigInteger l , BigInteger h, long totalSize, int splitCount) throws IOException - { - final int bufferSize = 64*1024; - - IFileReader dataReader = SequenceFile.bufferedReader(dataFile, bufferSize); - DataOutputBuffer bufOut = new DataOutputBuffer(); - DataInputBuffer bufIn = new DataInputBuffer(); - long splitFactor = totalSize/(splitCount+1); - long curSize = 0; - BigInteger[] tokens = new BigInteger[splitCount]; - int k = 0 ; - try - { - while ( !dataReader.isEOF()) - { - bufOut.reset(); - /* Record the position of the key. */ - dataReader.next(bufOut); - bufIn.reset(bufOut.getData(), bufOut.getLength()); - /* Key just read */ - String key = bufIn.readUTF(); - if ( !key.equals(SSTable.blockIndexKey_) && l.compareTo(StorageService.hash(key)) < 0 && h.compareTo(StorageService.hash(key)) > 0 ) - { - int sz = bufIn.readInt(); - curSize = curSize + sz; - byte[] keyData = new byte[sz]; - bufIn.read(keyData, 0, sz); - - if( curSize > splitFactor) - { - tokens[k++] = StorageService.hash(key); - curSize = 0 ; - if( k == splitCount) - { - break; - } - } - } - } - } - finally - { - dataReader.close(); - } - return tokens; - } - -}