You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/04/20 21:50:52 UTC
svn commit: r1095492 - in /cassandra/trunk: ./ conf/ contrib/
contrib/pig/src/java/org/apache/cassandra/hadoop/pig/ drivers/py/
drivers/py/cql/ examples/hadoop_word_count/src/
interface/thrift/gen-java/org/apache/cassandra/thrift/
src/java/org/apache/c...
Author: jbellis
Date: Wed Apr 20 19:50:50 2011
New Revision: 1095492
URL: http://svn.apache.org/viewvc?rev=1095492&view=rev
Log:
merge from 0.8
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/conf/cassandra-env.sh
cassandra/trunk/contrib/ (props changed)
cassandra/trunk/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java
cassandra/trunk/drivers/py/cql/__init__.py
cassandra/trunk/drivers/py/cql/connection.py
cassandra/trunk/drivers/py/cql/cursor.py
cassandra/trunk/drivers/py/cql/decoders.py
cassandra/trunk/drivers/py/cql/marshal.py
cassandra/trunk/drivers/py/cqlsh
cassandra/trunk/examples/hadoop_word_count/src/WordCountSetup.java
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed)
cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java
cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
cassandra/trunk/src/java/org/apache/cassandra/service/WriteResponseHandler.java
cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
cassandra/trunk/test/distributed/org/apache/cassandra/MovementTest.java
cassandra/trunk/test/distributed/org/apache/cassandra/MutationTest.java
cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java
cassandra/trunk/tools/py_stress/stress.py
cassandra/trunk/tools/stress/src/org/apache/cassandra/stress/operations/Inserter.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7:1026516-1094195,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7:1026516-1094195,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Apr 20 19:50:50 2011
@@ -57,6 +57,10 @@
* use 64KB flush buffer instead of in_memory_compaction_limit (CASSANDRA-2463)
* fix duplicate results from CFS.scan (CASSANDRA-2406)
* avoid caching token-only decoratedkeys (CASSANDRA-2416)
+ * count a row deletion as one operation towards memtable threshold
+ (CASSANDRA-2519)
+ * fixes for verifying destination availability under hinted conditions
+ so UE can be thrown intead of timing out (CASSANDRA-2514)
0.7.4
Modified: cassandra/trunk/conf/cassandra-env.sh
URL: http://svn.apache.org/viewvc/cassandra/trunk/conf/cassandra-env.sh?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/conf/cassandra-env.sh (original)
+++ cassandra/trunk/conf/cassandra-env.sh Wed Apr 20 19:50:50 2011
@@ -92,8 +92,8 @@ JMX_PORT="7199"
JVM_OPTS="$JVM_OPTS -ea"
# add the jamm javaagent
-java_version=`java -version 2>&1`
-if [[ $java_version != *OpenJDK* ]]
+check_openjdk=$(java -version 2>&1 | awk '{if (NR == 2) {print $1}}')
+if [ "$check_openjdk" != "OpenJDK" ]
then
JVM_OPTS="$JVM_OPTS -javaagent:$CASSANDRA_HOME/lib/jamm-0.2.1.jar"
fi
Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/contrib:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/contrib:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573
/incubator/cassandra/branches/cassandra-0.4/contrib:810145-810987,810994-834239,834349-834350
Modified: cassandra/trunk/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java (original)
+++ cassandra/trunk/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java Wed Apr 20 19:50:50 2011
@@ -179,8 +179,8 @@ public class CassandraStorage extends Lo
AbstractType default_validator = null;
try
{
- comparator = FBUtilities.getInstance(cfDef.comparator_type, "comparator");
- default_validator = FBUtilities.getInstance(cfDef.default_validation_class, "validator");
+ comparator = FBUtilities.getComparator(cfDef.comparator_type);
+ default_validator = FBUtilities.getComparator(cfDef.default_validation_class);
}
catch (ConfigurationException e)
{
@@ -202,7 +202,7 @@ public class CassandraStorage extends Lo
AbstractType validator = null;
try
{
- validator = FBUtilities.getInstance(cd.getValidation_class(), "validator");
+ validator = FBUtilities.getComparator(cd.getValidation_class());
validators.put(cd.name, validator);
}
catch (ConfigurationException e)
Modified: cassandra/trunk/drivers/py/cql/__init__.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/__init__.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/__init__.py (original)
+++ cassandra/trunk/drivers/py/cql/__init__.py Wed Apr 20 19:50:50 2011
@@ -17,6 +17,7 @@
import exceptions
import datetime
+import time
import connection
import marshal
Modified: cassandra/trunk/drivers/py/cql/connection.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/connection.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/connection.py (original)
+++ cassandra/trunk/drivers/py/cql/connection.py Wed Apr 20 19:50:50 2011
@@ -19,6 +19,7 @@ from cursor import Cursor
from cassandra import Cassandra
from thrift.transport import TTransport, TSocket
from thrift.protocol import TBinaryProtocol
+from cql.cassandra.ttypes import AuthenticationRequest
class Connection(object):
@@ -62,7 +63,7 @@ class Connection(object):
def close(self):
if not self.open_socket:
- raise InternalError("Connection has been closed.")
+ return
self.transport.close()
self.open_socket = False
@@ -75,9 +76,11 @@ class Connection(object):
return
def rollback(self):
+ from cql import NotSupportedError
raise NotSupportedError("Rollback functionality not present in Cassandra.")
def cursor(self):
+ from cql import ProgrammingError
if not self.open_socket:
- raise InternalError("Connection has been closed.")
+ raise ProgrammingError("Connection has been closed.")
return Cursor(self)
Modified: cassandra/trunk/drivers/py/cql/cursor.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/cursor.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/cursor.py (original)
+++ cassandra/trunk/drivers/py/cql/cursor.py Wed Apr 20 19:50:50 2011
@@ -62,6 +62,7 @@ class Cursor:
def prepare(self, query, params):
prepared_query = prepare(query, params)
+ self._schema_update_needed = False
# Snag the keyspace or column family and stash it for later use in
# decoding columns. These regexes don't match every query, but the
@@ -78,9 +79,7 @@ class Cursor:
# If this is a CREATE, then refresh the schema for decoding purposes.
match = Cursor._ddl_re.match(prepared_query)
if match:
- if isinstance(self.decoder, SchemaDecoder):
- self.decoder.schema = self.__get_schema()
-
+ self._schema_update_needed = True
return prepared_query
def __get_schema(self):
@@ -110,6 +109,9 @@ class Cursor:
def execute(self, cql_query, params={}):
self.__checksock()
+ self.rs_idx = 0
+ self.rowcount = 0
+ self.description = None
try:
prepared_q = self.prepare(cql_query, params)
except KeyError, e:
@@ -132,6 +134,9 @@ class Cursor:
except TApplicationException, tapp:
raise cql.InternalError("Internal application error")
+ if self._schema_update_needed and isinstance(self.decoder, SchemaDecoder):
+ self.decoder.schema = self.__get_schema()
+
if response.type == CqlResultType.ROWS:
self.result = ResultSet(response.rows,
self._query_ks,
Modified: cassandra/trunk/drivers/py/cql/decoders.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/decoders.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/decoders.py (original)
+++ cassandra/trunk/drivers/py/cql/decoders.py Wed Apr 20 19:50:50 2011
@@ -26,9 +26,8 @@ class SchemaDecoder(object):
self.schema = schema
def __get_column_family_def(self, keyspace, column_family):
- if self.schema.has_key(keyspace):
- if self.schema[keyspace].has_key(column_family):
- return self.schema[keyspace][column_family]
+ if keyspace in self.schema and column_family in self.schema[keyspace]:
+ return self.schema[keyspace][column_family]
return None
def __comparator_for(self, keyspace, column_family):
Modified: cassandra/trunk/drivers/py/cql/marshal.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/marshal.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/marshal.py (original)
+++ cassandra/trunk/drivers/py/cql/marshal.py Wed Apr 20 19:50:50 2011
@@ -66,11 +66,12 @@ def unmarshal_utf8(bytestr):
def unmarshal_int(bytestr):
return decode_bigint(bytestr)
-def unmarshal_long(bytestr):
- if _have_struct:
+if _have_struct:
+ def unmarshal_long(bytestr):
return _long_packer.unpack(bytestr)[0]
- else:
- return unpack(">q", bytestr)[0]
+else:
+ def unmarshal_long(bytestr):
+ return struct.unpack(">q", bytestr)[0]
def unmarshal_uuid(bytestr):
return UUID(bytes=bytestr)
Modified: cassandra/trunk/drivers/py/cqlsh
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cqlsh?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cqlsh (original)
+++ cassandra/trunk/drivers/py/cqlsh Wed Apr 20 19:50:50 2011
@@ -48,12 +48,13 @@ def startswith(words, text):
class Shell(cmd.Cmd):
default_prompt = "cqlsh> "
continue_prompt = " ... "
-
+
def __init__(self, hostname, port, color=False, username=None,
password=None):
cmd.Cmd.__init__(self)
self.conn = cql.connect(hostname, port, user=username, password=password)
-
+ self.cursor = self.conn.cursor()
+
if os.path.exists(HISTORY):
readline.read_history_file(HISTORY)
@@ -64,12 +65,33 @@ class Shell(cmd.Cmd):
self.statement = StringIO()
self.color = color
+ self.in_comment = False
def reset_statement(self):
self.set_prompt(Shell.default_prompt)
self.statement.truncate(0)
def get_statement(self, line):
+ if self.in_comment:
+ if "*/" in line:
+ fragment = line[line.index("*/")+2:]
+ if fragment.strip():
+ line = fragment
+ self.in_comment = False
+ else:
+ self.in_comment = False
+ self.set_prompt(Shell.default_prompt)
+ return None
+ else:
+ return None
+
+ if "/*" in line and (not self.in_comment):
+ self.in_comment = True
+ self.set_prompt(Shell.continue_prompt)
+ if line.lstrip().index("/*") != 0:
+ self.statement.write(line[:line.lstrip().index("/*")])
+ return None
+
self.statement.write("%s\n" % line)
if not line.endswith(";"):
@@ -82,25 +104,31 @@ class Shell(cmd.Cmd):
self.reset_statement()
def default(self, arg):
- if not arg.strip(): return
- statement = self.get_statement(arg)
+ def scrub_oneline_comments(s):
+ res = re.sub(r'\/\*.*\*\/', '', s)
+ res = re.sub(r'--.*$', '', res)
+ return res
+
+ input = scrub_oneline_comments(arg)
+ if not input.strip(): return
+ statement = self.get_statement(input)
if not statement: return
-
- cursor = self.conn.cursor()
- cursor.execute(statement)
-
- if isinstance(cursor.result, ResultSet):
- for row in cursor.result.rows:
- self.printout(row.key, BLUE, False)
- for column in row.columns:
+
+ self.cursor.execute(statement)
+
+ if isinstance(self.cursor.result, ResultSet):
+ for x in range(self.cursor.rowcount):
+ row = self.cursor.fetchone()
+ self.printout(repr(row[0]), BLUE, False)
+ for (i, value) in enumerate(row[1:]):
+ name = self.cursor.description[i+1][0]
self.printout(" | ", newline=False)
- # XXX: repr() is better than trying to print binary
- self.printout(repr(column.name), MAGENTA, False)
+ self.printout(repr(name), MAGENTA, False)
self.printout(",", newline=False)
- self.printout(repr(column.value), YELLOW, False)
+ self.printout(repr(value), YELLOW, False)
self.printout("")
else:
- if cursor.result: print cursor.result[0]
+ if self.cursor.result: print self.cursor.result[0]
def emptyline(self):
pass
@@ -109,19 +137,19 @@ class Shell(cmd.Cmd):
keywords = ('FIRST', 'REVERSED', 'FROM', 'WHERE', 'KEY')
return startswith(keywords, text.upper())
complete_SELECT = complete_select
-
+
def complete_update(self, text, line, begidx, endidx):
keywords = ('WHERE', 'KEY', 'SET')
return startswith(keywords, text.upper())
complete_UPDATE = complete_update
-
+
def complete_create(self, text, line, begidx, endidx):
words = line.split()
if len(words) < 3:
return startswith(['COLUMNFAMILY', 'KEYSPACE'], text.upper())
-
+
common = ['WITH', 'AND']
-
+
if words[1].upper() == 'COLUMNFAMILY':
types = startswith(CQLTYPES, text)
keywords = startswith(('KEY', 'PRIMARY'), text.upper())
@@ -141,12 +169,12 @@ class Shell(cmd.Cmd):
"memtable_operations_in_millions",
"replicate_on_write"), text)
return startswith(common, text.upper()) + types + keywords + props
-
+
if words[1].upper() == 'KEYSPACE':
props = ("replication_factor", "strategy_options", "strategy_class")
return startswith(common, text.upper()) + startswith(props, text)
complete_CREATE = complete_create
-
+
def complete_drop(self, text, line, begidx, endidx):
words = line.split()
if len(words) < 3:
@@ -161,27 +189,27 @@ class Shell(cmd.Cmd):
def set_prompt(self, prompt):
if sys.stdin.isatty():
self.prompt = prompt
-
+
def do_EOF(self, arg):
if sys.stdin.isatty(): print
self.do_exit(None)
-
+
def do_exit(self, arg):
sys.exit()
do_quit = do_exit
-
+
def printout(self, text, color=None, newline=True, out=sys.stdout):
if not color or not self.color:
out.write(text)
else:
out.write(color % text)
-
+
if newline:
out.write("\n");
-
+
def printerr(self, text, color=None, newline=True):
self.printout(text, color, newline, sys.stderr)
-
+
if __name__ == '__main__':
parser = OptionParser(usage = "Usage: %prog [host [port]]")
parser.add_option("-C",
@@ -191,9 +219,9 @@ if __name__ == '__main__':
parser.add_option("-u", "--username", help="Authenticate as user.")
parser.add_option("-p", "--password", help="Authenticate using password.")
(options, arguments) = parser.parse_args()
-
+
hostname = len(arguments) > 0 and arguments[0] or "localhost"
-
+
if len(arguments) > 1:
try:
port = int(arguments[1])
@@ -203,8 +231,8 @@ if __name__ == '__main__':
sys.exit(1)
else:
port = 9160
-
-
+
+
shell = Shell(hostname,
port,
color=options.color,
@@ -223,4 +251,4 @@ if __name__ == '__main__':
print
except Exception, err:
shell.printerr("Exception: %s" % err, color=RED)
-
+
Modified: cassandra/trunk/examples/hadoop_word_count/src/WordCountSetup.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/examples/hadoop_word_count/src/WordCountSetup.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/examples/hadoop_word_count/src/WordCountSetup.java (original)
+++ cassandra/trunk/examples/hadoop_word_count/src/WordCountSetup.java Wed Apr 20 19:50:50 2011
@@ -51,13 +51,19 @@ public class WordCountSetup
// text0: no rows
// text1: 1 row, 1 word
- c = new Column(ByteBufferUtil.bytes("text1"), ByteBufferUtil.bytes("word1"), System.currentTimeMillis());
+ c = new Column()
+ .setName(ByteBufferUtil.bytes("text1"))
+ .setValue(ByteBufferUtil.bytes("word1"))
+ .setTimestamp(System.currentTimeMillis());
mutationMap = getMutationMap(ByteBufferUtil.bytes("key0"), WordCount.COLUMN_FAMILY, c);
client.batch_mutate(mutationMap, ConsistencyLevel.ONE);
logger.info("added text1");
// text1: 1 row, 2 word
- c = new Column(ByteBufferUtil.bytes("text2"), ByteBufferUtil.bytes("word1 word2"), System.currentTimeMillis());
+ c = new Column()
+ .setName(ByteBufferUtil.bytes("text2"))
+ .setValue(ByteBufferUtil.bytes("word1 word2"))
+ .setTimestamp(System.currentTimeMillis());
mutationMap = getMutationMap(ByteBufferUtil.bytes("key0"), WordCount.COLUMN_FAMILY, c);
client.batch_mutate(mutationMap, ConsistencyLevel.ONE);
logger.info("added text2");
@@ -66,7 +72,10 @@ public class WordCountSetup
mutationMap = new HashMap<ByteBuffer,Map<String,List<Mutation>>>();
for (int i=0; i<1000; i++)
{
- c = new Column(ByteBufferUtil.bytes("text3"), ByteBufferUtil.bytes("word1"), System.currentTimeMillis());
+ c = new Column()
+ .setName(ByteBufferUtil.bytes("text3"))
+ .setValue(ByteBufferUtil.bytes("word1"))
+ .setTimestamp(System.currentTimeMillis());
addToMutationMap(mutationMap, ByteBufferUtil.bytes("key" + i), WordCount.COLUMN_FAMILY, c);
}
client.batch_mutate(mutationMap, ConsistencyLevel.ONE);
@@ -96,19 +105,20 @@ public class WordCountSetup
mutationMap.put(key, cfMutation);
}
- private static void setupKeyspace(Cassandra.Iface client) throws TException, InvalidRequestException
- {
+ private static void setupKeyspace(Cassandra.Iface client) throws TException, InvalidRequestException, SchemaDisagreementException {
List<CfDef> cfDefList = new ArrayList<CfDef>();
CfDef input = new CfDef(WordCount.KEYSPACE, WordCount.COLUMN_FAMILY);
- input.setComparator_type("AsciiType");
- input.setDefault_validation_class("AsciiType");
- cfDefList.add(input);
+ input.setComparator_type("AsciiType");
+ input.setDefault_validation_class("AsciiType");
+ cfDefList.add(input);
CfDef output = new CfDef(WordCount.KEYSPACE, WordCount.OUTPUT_COLUMN_FAMILY);
- output.setComparator_type("AsciiType");
- output.setDefault_validation_class("AsciiType");
+ output.setComparator_type("AsciiType");
+ output.setDefault_validation_class("AsciiType");
cfDefList.add(output);
- client.system_add_keyspace(new KsDef(WordCount.KEYSPACE, "org.apache.cassandra.locator.SimpleStrategy", 1, cfDefList));
+ KsDef ksDef = new KsDef(WordCount.KEYSPACE, "org.apache.cassandra.locator.SimpleStrategy", cfDefList);
+ ksDef.putToStrategy_options("replication_factor", "1");
+ client.system_add_keyspace(ksDef);
int magnitude = client.describe_ring(WordCount.KEYSPACE).size();
try
{
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 20 19:50:50 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1094195,1094481,1094604,1094647,1094796,1094809,1094818,1094831,1095250,1095438,1095473
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1095106,1095334
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1095491
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Wed Apr 20 19:50:50 2011
@@ -487,7 +487,7 @@ public class CliClient
sessionState.out.println("Returned " + columns.size() + " results.");
}
- private AbstractType getFormatTypeForColumn(String compareWith)
+ private AbstractType getFormatType(String compareWith)
{
Function function;
@@ -597,7 +597,7 @@ public class CliClient
// .getText() will give us <type>
String typeName = CliUtils.unescapeSQLString(typeTree.getText());
// building AbstractType from <type>
- AbstractType valueValidator = getFormatTypeForColumn(typeName);
+ AbstractType valueValidator = getFormatType(typeName);
// setting value for output
valueAsString = valueValidator.getString(ByteBuffer.wrap(columnValue));
@@ -1597,8 +1597,9 @@ public class CliClient
String leftSpace = " ";
String columnLeftSpace = leftSpace + " ";
- AbstractType columnNameValidator = getFormatTypeForColumn(isSuper ? cf_def.subcomparator_type
- : cf_def.comparator_type);
+ String compareWith = isSuper ? cf_def.subcomparator_type
+ : cf_def.comparator_type;
+ AbstractType columnNameValidator = getFormatType(compareWith);
sessionState.out.println(leftSpace + "Column Metadata:");
for (ColumnDef columnDef : cf_def.getColumn_metadata())
@@ -1927,7 +1928,7 @@ public class CliClient
private ByteBuffer columnNameAsBytes(String column, CfDef columnFamilyDef)
{
String comparatorClass = columnFamilyDef.comparator_type;
- return getBytesAccordingToType(column, getFormatTypeForColumn(comparatorClass));
+ return getBytesAccordingToType(column, getFormatType(comparatorClass));
}
/**
@@ -1980,7 +1981,7 @@ public class CliClient
comparatorClass = "BytesType";
}
- return getBytesAccordingToType(superColumn, getFormatTypeForColumn(comparatorClass));
+ return getBytesAccordingToType(superColumn, getFormatType(comparatorClass));
}
/**
@@ -2025,7 +2026,7 @@ public class CliClient
try
{
String validationClass = columnDefinition.getValidation_class();
- return getBytesAccordingToType(columnValue, getFormatTypeForColumn(validationClass));
+ return getBytesAccordingToType(columnValue, getFormatType(validationClass));
}
catch (Exception e)
{
@@ -2054,13 +2055,13 @@ public class CliClient
if (Arrays.equals(nameInBytes, columnNameInBytes))
{
- return getFormatTypeForColumn(columnDefinition.getValidation_class());
+ return getFormatType(columnDefinition.getValidation_class());
}
}
if (defaultValidator != null && !defaultValidator.isEmpty())
{
- return getFormatTypeForColumn(defaultValidator);
+ return getFormatType(defaultValidator);
}
return null;
@@ -2254,7 +2255,7 @@ public class CliClient
{
AbstractType validator;
String columnFamilyName = columnFamilyDef.getName();
- AbstractType keyComparator = this.cfKeysComparators.get(columnFamilyName);
+ AbstractType keyComparator = getKeyComparatorForCF(columnFamilyName);
for (KeySlice ks : slices)
{
@@ -2321,14 +2322,14 @@ public class CliClient
private String formatSubcolumnName(String keyspace, String columnFamily, ByteBuffer name)
throws NotFoundException, TException, IllegalAccessException, InstantiationException, NoSuchFieldException
{
- return getFormatTypeForColumn(getCfDef(keyspace,columnFamily).subcomparator_type).getString(name);
+ return getFormatType(getCfDef(keyspace, columnFamily).subcomparator_type).getString(name);
}
// retuns column name in human-readable format
private String formatColumnName(String keyspace, String columnFamily, ByteBuffer name)
throws NotFoundException, TException, IllegalAccessException, InstantiationException, NoSuchFieldException
{
- return getFormatTypeForColumn(getCfDef(keyspace, columnFamily).comparator_type).getString(name);
+ return getFormatType(getCfDef(keyspace, columnFamily).comparator_type).getString(name);
}
private ByteBuffer getColumnName(String columnFamily, Tree columnTree)
@@ -2352,8 +2353,21 @@ public class CliClient
String key = CliUtils.unescapeSQLString(keyTree.getText());
- AbstractType keyComparator = this.cfKeysComparators.get(columnFamily);
- return getBytesAccordingToType(key, keyComparator);
+ return getBytesAccordingToType(key, getKeyComparatorForCF(columnFamily));
+ }
+
+ private AbstractType getKeyComparatorForCF(String columnFamily)
+ {
+ AbstractType keyComparator = cfKeysComparators.get(columnFamily);
+
+ if (keyComparator == null)
+ {
+ String defaultValidationClass = getCfDef(columnFamily).getKey_validation_class();
+ assert defaultValidationClass != null;
+ keyComparator = getFormatType(defaultValidationClass);
+ }
+
+ return keyComparator;
}
private static class KsDefNamesComparator implements Comparator<KsDef>
@@ -2417,7 +2431,7 @@ public class CliClient
String defaultValidator = cfdef.default_validation_class;
if (defaultValidator != null && !defaultValidator.isEmpty())
{
- return (getFormatTypeForColumn(defaultValidator) instanceof CounterColumnType);
+ return (getFormatType(defaultValidator) instanceof CounterColumnType);
}
return false;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Wed Apr 20 19:50:50 2011
@@ -208,7 +208,9 @@ public class Memtable implements Compara
private void resolve(DecoratedKey key, ColumnFamily cf)
{
currentThroughput.addAndGet(cf.size());
- currentOperations.addAndGet(cf.getColumnCount());
+ currentOperations.addAndGet((cf.getColumnCount() == 0)
+ ? cf.isMarkedForDelete() ? 1 : 0
+ : cf.getColumnCount());
ColumnFamily oldCf = columnFamilies.putIfAbsent(key, cf);
if (oldCf == null)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractCommutativeType.java Wed Apr 20 19:50:50 2011
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import org.apache.cassandra.db.Column;
import org.apache.cassandra.db.context.CounterContext;
+import org.apache.cassandra.utils.ByteBufferUtil;
public abstract class AbstractCommutativeType extends AbstractType<Long>
{
@@ -37,6 +38,11 @@ public abstract class AbstractCommutativ
return CounterContext.instance().total(bytes);
}
+ public ByteBuffer decompose(Long value)
+ {
+ return ByteBufferUtil.bytes(value);
+ }
+
/**
* create commutative column
*/
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AbstractType.java Wed Apr 20 19:50:50 2011
@@ -93,6 +93,8 @@ public abstract class AbstractType<T> im
}
public abstract T compose(ByteBuffer bytes);
+
+ public abstract ByteBuffer decompose(T value);
/** get a string representation of a particular type. */
public abstract String toString(T t);
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/AsciiType.java Wed Apr 20 19:50:50 2011
@@ -61,9 +61,14 @@ public class AsciiType extends AbstractT
return getString(bytes);
}
+ public ByteBuffer decompose(String value)
+ {
+ return ByteBufferUtil.bytes(value, Charsets.US_ASCII);
+ }
+
public ByteBuffer fromString(String source)
{
- return ByteBufferUtil.bytes(source, Charsets.US_ASCII);
+ return decompose(source);
}
public void validate(ByteBuffer bytes) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BytesType.java Wed Apr 20 19:50:50 2011
@@ -36,12 +36,17 @@ public class BytesType extends AbstractT
{
return bytes.duplicate();
}
+
+ public ByteBuffer decompose(ByteBuffer value)
+ {
+ return value;
+ }
public int compare(ByteBuffer o1, ByteBuffer o2)
{
return BytesType.bytesCompare(o1, o2);
}
-
+
public static int bytesCompare(ByteBuffer o1, ByteBuffer o2)
{
if(null == o1){
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/IntegerType.java Wed Apr 20 19:50:50 2011
@@ -62,6 +62,11 @@ public final class IntegerType extends A
return new BigInteger(ByteBufferUtil.getArray(bytes));
}
+ public ByteBuffer decompose(BigInteger value)
+ {
+ return ByteBuffer.wrap(value.toByteArray());
+ }
+
public int compare(ByteBuffer lhs, ByteBuffer rhs)
{
int lhsLen = lhs.remaining();
@@ -152,7 +157,7 @@ public final class IntegerType extends A
throw new MarshalException(String.format("unable to make int from '%s'", source), e);
}
- return ByteBuffer.wrap(integerType.toByteArray());
+ return decompose(integerType);
}
public void validate(ByteBuffer bytes) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java Wed Apr 20 19:50:50 2011
@@ -38,6 +38,11 @@ public class LexicalUUIDType extends Abs
return UUIDGen.getUUID(bytes);
}
+ public ByteBuffer decompose(UUID value)
+ {
+ return ByteBuffer.wrap(UUIDGen.decompose(value));
+ }
+
public int compare(ByteBuffer o1, ByteBuffer o2)
{
if (o1.remaining() == 0)
@@ -78,7 +83,7 @@ public class LexicalUUIDType extends Abs
try
{
- return ByteBuffer.wrap(UUIDGen.decompose(UUID.fromString(source)));
+ return decompose(UUID.fromString(source));
}
catch (IllegalArgumentException e)
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LocalByPartionerType.java Wed Apr 20 19:50:50 2011
@@ -43,6 +43,11 @@ public class LocalByPartionerType<T exte
throw new UnsupportedOperationException("You can't do this with a local partitioner.");
}
+ public ByteBuffer decompose(ByteBuffer bytes)
+ {
+ throw new UnsupportedOperationException("You can't do this with a local partitioner.");
+ }
+
public String getString(ByteBuffer bytes)
{
return ByteBufferUtil.bytesToHex(bytes);
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java Wed Apr 20 19:50:50 2011
@@ -36,6 +36,11 @@ public class LongType extends AbstractTy
return ByteBufferUtil.toLong(bytes);
}
+ public ByteBuffer decompose(Long value)
+ {
+ return ByteBufferUtil.bytes(value);
+ }
+
public int compare(ByteBuffer o1, ByteBuffer o2)
{
if (o1.remaining() == 0)
@@ -91,7 +96,7 @@ public class LongType extends AbstractTy
throw new MarshalException(String.format("unable to make long from '%s'", source), e);
}
- return ByteBufferUtil.bytes(longType);
+ return decompose(longType);
}
public void validate(ByteBuffer bytes) throws MarshalException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java Wed Apr 20 19:50:50 2011
@@ -33,8 +33,8 @@ import org.apache.commons.lang.time.Date
public class TimeUUIDType extends AbstractType<UUID>
{
-
public static final TimeUUIDType instance = new TimeUUIDType();
+
static final Pattern regexPattern = Pattern.compile("[A-Fa-f0-9]{8}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{4}\\-[A-Fa-f0-9]{12}");
static final String[] iso8601Patterns = new String[] {
"yyyy-MM-dd HH:mm",
@@ -56,6 +56,11 @@ public class TimeUUIDType extends Abstra
return UUIDGen.getUUID(bytes);
}
+ public ByteBuffer decompose(UUID value)
+ {
+ return ByteBuffer.wrap(UUIDGen.decompose(value));
+ }
+
public int compare(ByteBuffer o1, ByteBuffer o2)
{
if (o1.remaining() == 0)
@@ -139,7 +144,7 @@ public class TimeUUIDType extends Abstra
try
{
uuid = UUID.fromString(source);
- idBytes = ByteBuffer.wrap(UUIDGen.decompose(uuid));
+ idBytes = decompose(uuid);
}
catch (IllegalArgumentException e)
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UTF8Type.java Wed Apr 20 19:50:50 2011
@@ -23,6 +23,7 @@ package org.apache.cassandra.db.marshal;
import java.nio.ByteBuffer;
import java.nio.charset.CharacterCodingException;
+import com.google.common.base.Charsets;
import org.apache.cassandra.utils.ByteBufferUtil;
public class UTF8Type extends AbstractType<String>
@@ -36,6 +37,11 @@ public class UTF8Type extends AbstractTy
return getString(bytes);
}
+ public ByteBuffer decompose(String value)
+ {
+ return ByteBufferUtil.bytes(value, Charsets.UTF_8);
+ }
+
public int compare(ByteBuffer o1, ByteBuffer o2)
{
return BytesType.bytesCompare(o1, o2);
@@ -60,9 +66,9 @@ public class UTF8Type extends AbstractTy
public ByteBuffer fromString(String source)
{
- return ByteBufferUtil.bytes(source);
+ return decompose(source);
}
-
+
public void validate(ByteBuffer bytes) throws MarshalException
{
if (!UTF8Validator.validate(bytes.slice()))
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/UUIDType.java Wed Apr 20 19:50:50 2011
@@ -204,6 +204,11 @@ public class UUIDType extends AbstractTy
return uuid.toString();
}
+ public ByteBuffer decompose(UUID value)
+ {
+ return ByteBuffer.wrap(UUIDGen.decompose(value));
+ }
+
@Override
public ByteBuffer fromString(String source) throws MarshalException
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterSyncWriteResponseHandler.java Wed Apr 20 19:50:50 2011
@@ -102,10 +102,12 @@ public class DatacenterSyncWriteResponse
dcEndpoints.put(dc, new AtomicInteger());
for (InetAddress destination : hintedEndpoints.keySet())
{
- assert writeEndpoints.contains(destination);
- // figure out the destination dc
- String destinationDC = snitch.getDatacenter(destination);
- dcEndpoints.get(destinationDC).incrementAndGet();
+ if (writeEndpoints.contains(destination))
+ {
+ // figure out the destination dc
+ String destinationDC = snitch.getDatacenter(destination);
+ dcEndpoints.get(destinationDC).incrementAndGet();
+ }
}
// Throw exception if any of the DC doesn't have livenodes to accept write.
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/DatacenterWriteResponseHandler.java Wed Apr 20 19:50:50 2011
@@ -84,9 +84,9 @@ public class DatacenterWriteResponseHand
public void assureSufficientLiveNodes() throws UnavailableException
{
int liveNodes = 0;
- for (InetAddress destination : writeEndpoints)
+ for (InetAddress destination : hintedEndpoints.keySet())
{
- if (localdc.equals(snitch.getDatacenter(destination)))
+ if (localdc.equals(snitch.getDatacenter(destination)) && writeEndpoints.contains(destination))
liveNodes++;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/WriteResponseHandler.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/WriteResponseHandler.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/WriteResponseHandler.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/WriteResponseHandler.java Wed Apr 20 19:50:50 2011
@@ -100,6 +100,7 @@ public class WriteResponseHandler extend
// ensure there are blockFor distinct living nodes (hints are ok).
if (hintedEndpoints.keySet().size() < responses.get())
throw new UnavailableException();
+ return;
}
// count destinations that are part of the desired target set
Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java Wed Apr 20 19:50:50 2011
@@ -564,7 +564,6 @@ public class FBUtilities
/**
* Constructs an instance of the given class, which must have a no-arg constructor.
- * TODO: Similar method for our 'instance member' singleton pattern would be nice.
* @param classname Fully qualified classname.
* @param readable Descriptive noun for the role the class plays.
* @throws ConfigurationException If the class cannot be found.
@@ -596,31 +595,6 @@ public class FBUtilities
}
}
- public static <T> T getInstance(String classname, String readable) throws ConfigurationException
- {
- Class cls = classForName(classname, readable);
- T rval = null;
- try
- {
- rval = (T) cls.getDeclaredMethod("getInstance").invoke(new Object[] {null, null});
-
- }
- catch (NoSuchMethodException e)
- {
- throw new ConfigurationException("Class does not have the getInstance method with no arguments");
- }
- catch (InvocationTargetException e)
- {
- throw new ConfigurationException(String.format("Could not call method getInstance on %s class %s", readable, classname));
- }
- catch (IllegalAccessException e)
- {
- throw new ConfigurationException(String.format("Could not call method getInstance on %s class %s", readable, classname));
- }
-
- return rval;
- }
-
public static <T extends Comparable> SortedSet<T> singleton(T column)
{
return new TreeSet<T>(Arrays.asList(column));
Modified: cassandra/trunk/test/distributed/org/apache/cassandra/MovementTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/distributed/org/apache/cassandra/MovementTest.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/test/distributed/org/apache/cassandra/MovementTest.java (original)
+++ cassandra/trunk/test/distributed/org/apache/cassandra/MovementTest.java Wed Apr 20 19:50:50 2011
@@ -50,16 +50,12 @@ public class MovementTest extends TestBa
private static Map<ByteBuffer,List<ColumnOrSuperColumn>> insertBatch(Cassandra.Client client) throws Exception
{
final int N = 1000;
- Column col1 = new Column(
- ByteBufferUtil.bytes("c1"),
- ByteBufferUtil.bytes("v1"),
- 0
- );
- Column col2 = new Column(
- ByteBufferUtil.bytes("c2"),
- ByteBufferUtil.bytes("v2"),
- 0
- );
+ Column col1 = new Column(ByteBufferUtil.bytes("c1"))
+ .setValue(ByteBufferUtil.bytes("v1"))
+ .setTimestamp(0);
+ Column col2 = new Column(ByteBufferUtil.bytes("c2"))
+ .setValue(ByteBufferUtil.bytes("v2"))
+ .setTimestamp(0);
// build N rows
Map<ByteBuffer,List<ColumnOrSuperColumn>> rows = new HashMap<ByteBuffer, List<ColumnOrSuperColumn>>();
Modified: cassandra/trunk/test/distributed/org/apache/cassandra/MutationTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/distributed/org/apache/cassandra/MutationTest.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/test/distributed/org/apache/cassandra/MutationTest.java (original)
+++ cassandra/trunk/test/distributed/org/apache/cassandra/MutationTest.java Wed Apr 20 19:50:50 2011
@@ -180,190 +180,6 @@ public class MutationTest extends TestBa
}
}
- protected void insert(Cassandra.Client client, ByteBuffer key, String cf, String name, String value, long timestamp, ConsistencyLevel cl)
- throws InvalidRequestException, UnavailableException, TimedOutException, TException
- {
- Column col = new Column(
- ByteBufferUtil.bytes(name),
- ByteBufferUtil.bytes(value),
- timestamp
- );
- client.insert(key, new ColumnParent(cf), col, cl);
- }
-
- protected Column getColumn(Cassandra.Client client, ByteBuffer key, String cf, String col, ConsistencyLevel cl)
- throws InvalidRequestException, UnavailableException, TimedOutException, TException, NotFoundException
- {
- ColumnPath cpath = new ColumnPath(cf);
- cpath.setColumn(col.getBytes());
- return client.get(key, cpath, cl).column;
- }
-
- protected class Get extends RetryingAction
- {
- public Get(Cassandra.Client client, String cf, ByteBuffer key)
- {
- super(client, cf, key);
- }
-
- public void tryPerformAction(ConsistencyLevel cl) throws Exception
- {
- assertColumnEqual(name, value, timestamp, getColumn(client, key, cf, name, cl));
- }
- }
-
- protected class Insert extends RetryingAction
- {
- public Insert(Cassandra.Client client, String cf, ByteBuffer key)
- {
- super(client, cf, key);
- }
-
- public void tryPerformAction(ConsistencyLevel cl) throws Exception
- {
- insert(client, key, cf, name, value, timestamp, cl);
- }
- }
-
- /** Performs an action repeatedly until timeout, success or failure. */
- protected abstract class RetryingAction
- {
- protected Cassandra.Client client;
- protected String cf;
- protected ByteBuffer key;
- protected String name;
- protected String value;
- protected long timestamp;
-
- private Set<Class<Exception>> expected = new HashSet<Class<Exception>>();
- private long timeout = StorageService.RING_DELAY;
-
- public RetryingAction(Cassandra.Client client, String cf, ByteBuffer key)
- {
- this.client = client;
- this.cf = cf;
- this.key = key;
- this.timestamp = 0;
- }
-
- public RetryingAction name(String name)
- {
- this.name = name; return this;
- }
-
- /** The value to expect for the return column, or null to expect the column to be missing. */
- public RetryingAction value(String value)
- {
- this.value = value; return this;
- }
-
- /** The total time to allow before failing. */
- public RetryingAction timeout(long timeout)
- {
- this.timeout = timeout; return this;
- }
-
- /** The expected timestamp of the returned column. */
- public RetryingAction timestamp(long timestamp)
- {
- this.timestamp = timestamp; return this;
- }
-
- /** The exception classes that indicate success. */
- public RetryingAction expecting(Class... tempExceptions)
- {
- this.expected.clear();
- for (Class exclass : tempExceptions)
- expected.add((Class<Exception>)exclass);
- return this;
- }
-
- public void perform(ConsistencyLevel cl) throws AssertionError
- {
- long deadline = System.currentTimeMillis() + timeout;
- int attempts = 0;
- String template = "%s for " + this + " after %d attempt(s) with %d ms to spare.";
- Exception e = null;
- while(deadline > System.currentTimeMillis())
- {
- try
- {
- attempts++;
- tryPerformAction(cl);
- logger.info(String.format(template, "Succeeded", attempts, deadline - System.currentTimeMillis()));
- return;
- }
- catch (Exception ex)
- {
- e = ex;
- if (!expected.contains(ex.getClass()))
- continue;
- logger.info(String.format(template, "Caught expected exception: " + e, attempts, deadline - System.currentTimeMillis()));
- return;
- }
- }
- String err = String.format(template, "Caught unexpected: " + e, attempts, deadline - System.currentTimeMillis());
- logger.error(err);
- throw new AssertionError(err);
- }
-
- public String toString()
- {
- return this.getClass() + "(" + key + "," + name + ")";
- }
-
- protected abstract void tryPerformAction(ConsistencyLevel cl) throws Exception;
- }
-
- protected List<ColumnOrSuperColumn> get_slice(Cassandra.Client client, ByteBuffer key, String cf, ConsistencyLevel cl)
- throws InvalidRequestException, UnavailableException, TimedOutException, TException
- {
- SlicePredicate sp = new SlicePredicate();
- sp.setSlice_range(
- new SliceRange(
- ByteBuffer.wrap(new byte[0]),
- ByteBuffer.wrap(new byte[0]),
- false,
- 1000
- )
- );
- return client.get_slice(key, new ColumnParent(cf), sp, cl);
- }
-
- protected void assertColumnEqual(String name, String value, long timestamp, Column col)
- {
- assertEquals(ByteBufferUtil.bytes(name), col.name);
- assertEquals(ByteBufferUtil.bytes(value), col.value);
- assertEquals(timestamp, col.timestamp);
- }
-
- protected List<InetAddress> endpointsForKey(InetAddress seed, ByteBuffer key, String keyspace)
- throws IOException
- {
- RingCache ring = new RingCache(keyspace, new RandomPartitioner(), seed.getHostAddress(), 9160);
- List<InetAddress> privateendpoints = ring.getEndpoint(key);
- List<InetAddress> endpoints = new ArrayList<InetAddress>();
- for (InetAddress endpoint : privateendpoints)
- {
- endpoints.add(controller.getPublicHost(endpoint));
- }
- return endpoints;
- }
-
- protected InetAddress nonEndpointForKey(InetAddress seed, ByteBuffer key, String keyspace)
- throws IOException
- {
- List<InetAddress> endpoints = endpointsForKey(seed, key, keyspace);
- for (InetAddress host : controller.getHosts())
- {
- if (!endpoints.contains(host))
- {
- return host;
- }
- }
- return null;
- }
-
protected ByteBuffer newKey()
{
return ByteBufferUtil.bytes(String.format("test.key.%d", System.currentTimeMillis()));
Modified: cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java (original)
+++ cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java Wed Apr 20 19:50:50 2011
@@ -149,11 +149,9 @@ public abstract class TestBase
protected void insert(Cassandra.Client client, ByteBuffer key, String cf, String name, String value, long timestamp, ConsistencyLevel cl)
throws InvalidRequestException, UnavailableException, TimedOutException, TException
{
- Column col = new Column(
- ByteBuffer.wrap(name.getBytes()),
- ByteBuffer.wrap(value.getBytes()),
- timestamp
- );
+ Column col = new Column(ByteBuffer.wrap(name.getBytes()))
+ .setValue(ByteBuffer.wrap(value.getBytes()))
+ .setTimestamp(timestamp);
client.insert(key, new ColumnParent(cf), col, cl);
}
Modified: cassandra/trunk/tools/py_stress/stress.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/tools/py_stress/stress.py?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/tools/py_stress/stress.py (original)
+++ cassandra/trunk/tools/py_stress/stress.py Wed Apr 20 19:50:50 2011
@@ -185,7 +185,10 @@ def make_keyspaces():
colms = [ColumnDef(name='C1', validation_class='UTF8Type', index_type=IndexType.KEYS_BITMAP)]
cfams = [CfDef(keyspace='Keyspace1', name='Standard1', column_metadata=colms),
CfDef(keyspace='Keyspace1', name='Super1', column_type='Super')]
- keyspace = KsDef(name='Keyspace1', strategy_class='org.apache.cassandra.locator.SimpleStrategy', replication_factor=options.replication, cf_defs=cfams)
+ keyspace = KsDef(name='Keyspace1',
+ strategy_class='org.apache.cassandra.locator.SimpleStrategy',
+ strategy_options={'replication_factor': str(options.replication)},
+ cf_defs=cfams)
client = get_client(nodes[0], options.port)
client.transport.open()
try:
Modified: cassandra/trunk/tools/stress/src/org/apache/cassandra/stress/operations/Inserter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/tools/stress/src/org/apache/cassandra/stress/operations/Inserter.java?rev=1095492&r1=1095491&r2=1095492&view=diff
==============================================================================
--- cassandra/trunk/tools/stress/src/org/apache/cassandra/stress/operations/Inserter.java (original)
+++ cassandra/trunk/tools/stress/src/org/apache/cassandra/stress/operations/Inserter.java Wed Apr 20 19:50:50 2011
@@ -49,7 +49,7 @@ public class Inserter extends Operation
{
String columnName = ("C" + Integer.toString(i));
ByteBuffer columnValue = values.get(i % values.size());
- columns.add(new Column(ByteBufferUtil.bytes(columnName), columnValue, System.currentTimeMillis()));
+ columns.add(new Column(ByteBufferUtil.bytes(columnName)).setValue(columnValue).setTimestamp(System.currentTimeMillis()));
}
if (session.getColumnFamilyType() == ColumnFamilyType.Super)