Author: jbellis
Date: Fri Mar 18 02:31:48 2011
New Revision: 1082799
URL: http://svn.apache.org/viewvc?rev=1082799&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/contrib/ (props changed)
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/config/DatabaseDescriptor.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
cassandra/trunk/test/system/__init__.py
cassandra/trunk/test/system/test_thrift_server.py
cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7:1026516-1081924
+/cassandra/branches/cassandra-0.7:1026516-1082796
/cassandra/branches/cassandra-0.7.0:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3:774578-796573
Modified: cassandra/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Fri Mar 18 02:31:48 2011
@@ -21,6 +21,7 @@
* allow job configuration to set the CL used in Hadoop jobs (CASSANDRA-2331)
* queue secondary indexes for flush before the parent (CASSANDRA-2330)
* shut down server for OOM on a Thrift thread (CASSANDRA-2269)
+ * reduce contention on Table.flusherLock (CASSANDRA-1954)
0.7.4
Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1081924
+/cassandra/branches/cassandra-0.7/contrib:1026516-1082796
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1081924
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1082796
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1081924
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1082796
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1081924
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1082796
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1081924
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1082796
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
/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
Propchange:
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 02:31:48 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1081924
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1082796
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
/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
Modified:
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Fri Mar 18 02:31:48 2011
@@ -605,7 +605,7 @@ public class DatabaseDescriptor
public static String getInitialToken()
{
- return conf.initial_token;
+ return System.getProperty("cassandra.initial_token",
conf.initial_token);
}
public static String getClusterName()
@@ -672,12 +672,12 @@ public class DatabaseDescriptor
public static int getStoragePort()
{
- return conf.storage_port;
+ return Integer.parseInt(System.getProperty("cassandra.storage_port",
conf.storage_port.toString()));
}
public static int getRpcPort()
{
- return conf.rpc_port;
+ return Integer.parseInt(System.getProperty("cassandra.rpc_port",
conf.rpc_port.toString()));
}
public static long getRpcTimeout()
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri
Mar 18 02:31:48 2011
@@ -700,6 +700,10 @@ public class ColumnFamilyStore implement
if (!icc.contains(this))
memtable = new Memtable(this);
+ if (memtableSwitchCount == Integer.MAX_VALUE)
+ memtableSwitchCount = 0;
+ memtableSwitchCount++;
+
// when all the memtables have been written, including for
indexes, mark the flush in the commitlog header.
// a second executor makes sure the onMemtableFlushes get called
in the right order,
// while keeping the wait-for-flush (future.get) out of anything
latency-sensitive.
@@ -720,11 +724,6 @@ public class ColumnFamilyStore implement
finally
{
Table.flusherLock.unlock();
- if (memtableSwitchCount == Integer.MAX_VALUE)
- {
- memtableSwitchCount = 0;
- }
- memtableSwitchCount++;
}
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Fri Mar 18 02:31:48 2011
@@ -394,12 +394,41 @@ public class ThriftValidation
if (index_clause.expressions.isEmpty())
throw new InvalidRequestException("index clause list may not be
empty");
Set<ByteBuffer> indexedColumns =
Table.open(keyspace).getColumnFamilyStore(columnFamily).getIndexedColumns();
+ AbstractType nameValidator = ColumnFamily.getComparatorFor(keyspace,
columnFamily, null);
+
+ boolean isIndexed = false;
for (IndexExpression expression : index_clause.expressions)
{
- if (expression.op.equals(IndexOperator.EQ) &&
indexedColumns.contains(expression.column_name))
- return;
+ try
+ {
+ nameValidator.validate(expression.column_name);
+ }
+ catch (MarshalException me)
+ {
+ throw new InvalidRequestException(String.format("[%s]=[%s]
failed name validation (%s)",
+
ByteBufferUtil.bytesToHex(expression.column_name),
+
ByteBufferUtil.bytesToHex(expression.value),
+
me.getMessage()));
+ }
+
+ AbstractType valueValidator =
DatabaseDescriptor.getValueValidator(keyspace, columnFamily,
expression.column_name);
+ try
+ {
+ valueValidator.validate(expression.value);
+ }
+ catch (MarshalException me)
+ {
+ throw new InvalidRequestException(String.format("[%s]=[%s]
failed value validation (%s)",
+
ByteBufferUtil.bytesToHex(expression.column_name),
+
ByteBufferUtil.bytesToHex(expression.value),
+
me.getMessage()));
+ }
+
+ isIndexed |= expression.op.equals(IndexOperator.EQ) &&
indexedColumns.contains(expression.column_name);
}
- throw new InvalidRequestException("No indexed columns present in index
clause with operator EQ");
+
+ if (!isIndexed)
+ throw new InvalidRequestException("No indexed columns present in
index clause with operator EQ");
}
public static void validateCfDef(CfDef cf_def) throws
InvalidRequestException
Modified: cassandra/trunk/test/system/__init__.py
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/system/__init__.py?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/test/system/__init__.py (original)
+++ cassandra/trunk/test/system/__init__.py Fri Mar 18 02:31:48 2011
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import os, sys, time, signal, httplib, errno
+import os, sys, time, signal, httplib, errno, uuid
__all__ = ['root', 'thrift_client']
@@ -162,6 +162,8 @@ class ThriftTester(BaseTester):
Cassandra.CfDef('Keyspace1', 'Counter1',
default_validation_class='CounterColumnType'),
Cassandra.CfDef('Keyspace1', 'SuperCounter1', column_type='Super',
default_validation_class='CounterColumnType'),
Cassandra.CfDef('Keyspace1', 'Indexed1',
column_metadata=[Cassandra.ColumnDef('birthdate', 'LongType',
Cassandra.IndexType.KEYS, 'birthdate')]),
+ Cassandra.CfDef('Keyspace1', 'Indexed2',
comparator_type='TimeUUIDType',
column_metadata=[Cassandra.ColumnDef(uuid.UUID('00000000-0000-1000-0000-000000000000').bytes,
'LongType', Cassandra.IndexType.KEYS, 'birthdate')]),
+
])
keyspace2 = Cassandra.KsDef('Keyspace2',
'org.apache.cassandra.locator.SimpleStrategy', None, 1,
Modified: cassandra/trunk/test/system/test_thrift_server.py
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_thrift_server.py?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_thrift_server.py (original)
+++ cassandra/trunk/test/system/test_thrift_server.py Fri Mar 18 02:31:48 2011
@@ -17,7 +17,7 @@
# to run a single test, run from trunk/:
# PYTHONPATH=test nosetests
--tests=system.test_thrift_server:TestMutations.test_empty_range
-import os, sys, time, struct
+import os, sys, time, struct, uuid
from . import root, ThriftTester
from . import thrift_client as client
@@ -1122,7 +1122,10 @@ class TestMutations(ThriftTester):
ks1 = client.describe_keyspace("Keyspace1")
assert ks1.replication_factor == 1
- cf0 = ks1.cf_defs[0]
+ for cf in ks1.cf_defs:
+ if cf.name == "Standard1":
+ cf0 = cf
+ break;
assert cf0.comparator_type ==
"org.apache.cassandra.db.marshal.BytesType"
def test_describe(self):
@@ -1764,6 +1767,15 @@ class TestMutations(ThriftTester):
assert result[0].key == 'key3'
assert len(result[0].columns) == 2, result[0].columns
+ cp = ColumnParent('Indexed2')
+ # name must be valid (TimeUUID)
+ clause = IndexClause([IndexExpression('foo', IndexOperator.EQ,
uuid.UUID('00000000-0000-1000-0000-000000000000').bytes)], '')
+ _expect_exception(lambda: client.get_indexed_slices(cp, clause, sp,
ConsistencyLevel.ONE), InvalidRequestException)
+
+ # value must be valid (TimeUUID)
+ clause =
IndexClause([IndexExpression(uuid.UUID('00000000-0000-1000-0000-000000000000').bytes,
IndexOperator.EQ, "foo")], '')
+ _expect_exception(lambda: client.get_indexed_slices(cp, clause, sp,
ConsistencyLevel.ONE), InvalidRequestException)
+
def test_index_scan_expiring(self):
""" Test that column ttled expires from KEYS index"""
_set_keyspace('Keyspace1')
Modified: cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1082799&r1=1082798&r2=1082799&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java Fri Mar 18
02:31:48 2011
@@ -188,13 +188,13 @@ public class CliTest extends CleanupHelp
}
else if (statement.startsWith("set "))
{
- assertEquals(result, "Value inserted.\n");
+ assertEquals(result, "Value inserted." +
System.getProperty("line.separator"));
}
else if (statement.startsWith("get "))
{
if (statement.contains("where"))
{
-
assertTrue(result.startsWith("-------------------\nRowKey:"));
+ assertTrue(result.startsWith("-------------------" +
System.getProperty("line.separator") + "RowKey:"));
}
else
{