You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ty...@apache.org on 2015/05/07 17:32:56 UTC
[1/3] cassandra git commit: Log warning on unrecognized table during
message deser
Repository: cassandra
Updated Branches:
refs/heads/trunk 7954965eb -> 6d5b0b45a
Log warning on unrecognized table during message deser
Patch by Tyler Hobbs; reviewed by Sylvain Lebresne for CASSANDRA-9136
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/58de86bf
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/58de86bf
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/58de86bf
Branch: refs/heads/trunk
Commit: 58de86bff5e9383b679d9bb48cc95ec444275ca7
Parents: 6ab0c30
Author: Tyler Hobbs <ty...@apache.org>
Authored: Thu May 7 10:30:01 2015 -0500
Committer: Tyler Hobbs <ty...@apache.org>
Committed: Thu May 7 10:30:01 2015 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 ++
src/java/org/apache/cassandra/db/PagedRangeCommand.java | 10 ++++++++++
src/java/org/apache/cassandra/db/RangeSliceCommand.java | 7 +++++++
.../org/apache/cassandra/db/SliceByNamesReadCommand.java | 8 ++++++++
.../org/apache/cassandra/db/SliceFromReadCommand.java | 8 ++++++++
5 files changed, 35 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/58de86bf/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d76606c..8473777 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
2.0.15:
+ * Log warning message when a table is queried before the schema has fully
+ propagated (CASSANDRA-9136)
* Overload SecondaryIndex#indexes to accept the column definition (CASSANDRA-9314)
* (cqlsh) Add SERIAL and LOCAL_SERIAL consistency levels (CASSANDRA-8051)
* Fix index selection during rebuild with certain table layouts (CASSANDRA-9281)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/58de86bf/src/java/org/apache/cassandra/db/PagedRangeCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/PagedRangeCommand.java b/src/java/org/apache/cassandra/db/PagedRangeCommand.java
index a8d7f49..3bc6539 100644
--- a/src/java/org/apache/cassandra/db/PagedRangeCommand.java
+++ b/src/java/org/apache/cassandra/db/PagedRangeCommand.java
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
+import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.filter.*;
import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.io.IVersionedSerializer;
@@ -153,6 +154,15 @@ public class PagedRangeCommand extends AbstractRangeCommand
{
String keyspace = in.readUTF();
String columnFamily = in.readUTF();
+
+ if (Schema.instance.getCFMetaData(keyspace, columnFamily) == null)
+ {
+ String message = String.format("Got paged range command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspace, columnFamily);
+ throw new UnknownColumnFamilyException(message, null);
+ }
+
long timestamp = in.readLong();
AbstractBounds<RowPosition> keyRange = AbstractBounds.serializer.deserialize(in, version).toRowBounds();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/58de86bf/src/java/org/apache/cassandra/db/RangeSliceCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeSliceCommand.java b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
index 4aa1595..553f111 100644
--- a/src/java/org/apache/cassandra/db/RangeSliceCommand.java
+++ b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
@@ -213,6 +213,13 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspace, columnFamily);
+ if (metadata == null)
+ {
+ String message = String.format("Got range slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspace, columnFamily);
+ throw new UnknownColumnFamilyException(message, null);
+ }
IDiskAtomFilter predicate;
if (version < MessagingService.VERSION_20)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/58de86bf/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
index ae3db78..ec7c439 100644
--- a/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
@@ -120,6 +120,14 @@ class SliceByNamesReadCommandSerializer implements IVersionedSerializer<ReadComm
long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, cfName);
+ if (metadata == null)
+ {
+ String message = String.format("Got slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspaceName, cfName);
+ throw new UnknownColumnFamilyException(message, null);
+ }
+
ReadCommand command;
if (version < MessagingService.VERSION_20)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/58de86bf/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SliceFromReadCommand.java b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
index 7526796..afca338 100644
--- a/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
@@ -181,6 +181,14 @@ class SliceFromReadCommandSerializer implements IVersionedSerializer<ReadCommand
long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, cfName);
+ if (metadata == null)
+ {
+ String message = String.format("Got slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspaceName, cfName);
+ throw new UnknownColumnFamilyException(message, null);
+ }
+
SliceQueryFilter filter;
if (version < MessagingService.VERSION_20)
{
[3/3] cassandra git commit: Merge branch 'cassandra-2.1' into trunk
Posted by ty...@apache.org.
Merge branch 'cassandra-2.1' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6d5b0b45
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6d5b0b45
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6d5b0b45
Branch: refs/heads/trunk
Commit: 6d5b0b45ad86be7568ab15dc61c75fa50143082a
Parents: 7954965 049a965
Author: Tyler Hobbs <ty...@apache.org>
Authored: Thu May 7 10:32:26 2015 -0500
Committer: Tyler Hobbs <ty...@apache.org>
Committed: Thu May 7 10:32:26 2015 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
src/java/org/apache/cassandra/db/PagedRangeCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/RangeSliceCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/SliceFromReadCommand.java | 7 +++++++
5 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d5b0b45/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d5b0b45/src/java/org/apache/cassandra/db/PagedRangeCommand.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/PagedRangeCommand.java
index ab988f1,70325a8..402e711
--- a/src/java/org/apache/cassandra/db/PagedRangeCommand.java
+++ b/src/java/org/apache/cassandra/db/PagedRangeCommand.java
@@@ -159,10 -158,16 +159,17 @@@ public class PagedRangeCommand extends
String columnFamily = in.readUTF();
long timestamp = in.readLong();
- AbstractBounds<RowPosition> keyRange = AbstractBounds.serializer.deserialize(in, version).toRowBounds();
+ AbstractBounds<RowPosition> keyRange =
+ AbstractBounds.rowPositionSerializer.deserialize(in, MessagingService.globalPartitioner(), version);
CFMetaData metadata = Schema.instance.getCFMetaData(keyspace, columnFamily);
+ if (metadata == null)
+ {
+ String message = String.format("Got paged range command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspace, columnFamily);
+ throw new UnknownColumnFamilyException(message, null);
+ }
SliceQueryFilter predicate = metadata.comparator.sliceQueryFilterSerializer().deserialize(in, version);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d5b0b45/src/java/org/apache/cassandra/db/RangeSliceCommand.java
----------------------------------------------------------------------
[2/3] cassandra git commit: Merge branch 'cassandra-2.0' into
cassandra-2.1
Posted by ty...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/049a965b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/049a965b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/049a965b
Branch: refs/heads/trunk
Commit: 049a965bf1e57d30cac13141bdf228268765ebeb
Parents: 2c8e810 58de86b
Author: Tyler Hobbs <ty...@apache.org>
Authored: Thu May 7 10:31:52 2015 -0500
Committer: Tyler Hobbs <ty...@apache.org>
Committed: Thu May 7 10:31:52 2015 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
src/java/org/apache/cassandra/db/PagedRangeCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/RangeSliceCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java | 7 +++++++
src/java/org/apache/cassandra/db/SliceFromReadCommand.java | 7 +++++++
5 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/049a965b/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 41e0340,8473777..d512973
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,21 -1,6 +1,22 @@@
-2.0.15:
+2.1.6
+ * Improve sstable exclusion from partition tombstones (CASSANDRA-9298)
+ * Validate the indexed column rather than the cell's contents for 2i (CASSANDRA-9057)
+ * Add support for top-k custom 2i queries (CASSANDRA-8717)
+ * Fix error when dropping table during compaction (CASSANDRA-9251)
+ * cassandra-stress supports validation operations over user profiles (CASSANDRA-8773)
+ * Add support for rate limiting log messages (CASSANDRA-9029)
+ * Log the partition key with tombstone warnings (CASSANDRA-8561)
+ * Reduce runWithCompactionsDisabled poll interval to 1ms (CASSANDRA-9271)
+ * Fix PITR commitlog replay (CASSANDRA-9195)
+ * GCInspector logs very different times (CASSANDRA-9124)
+ * Fix deleting from an empty list (CASSANDRA-9198)
+ * Update tuple and collection types that use a user-defined type when that UDT
+ is modified (CASSANDRA-9148, CASSANDRA-9192)
+ * Use higher timeout for prepair and snapshot in repair (CASSANDRA-9261)
+ * Fix anticompaction blocking ANTI_ENTROPY stage (CASSANDRA-9151)
+Merged from 2.0:
- 2.0.15:
+ * Log warning message when a table is queried before the schema has fully
+ propagated (CASSANDRA-9136)
* Overload SecondaryIndex#indexes to accept the column definition (CASSANDRA-9314)
* (cqlsh) Add SERIAL and LOCAL_SERIAL consistency levels (CASSANDRA-8051)
* Fix index selection during rebuild with certain table layouts (CASSANDRA-9281)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/049a965b/src/java/org/apache/cassandra/db/PagedRangeCommand.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/PagedRangeCommand.java
index 614f0f7,3bc6539..70325a8
--- a/src/java/org/apache/cassandra/db/PagedRangeCommand.java
+++ b/src/java/org/apache/cassandra/db/PagedRangeCommand.java
@@@ -156,16 -154,23 +156,23 @@@ public class PagedRangeCommand extends
{
String keyspace = in.readUTF();
String columnFamily = in.readUTF();
+ long timestamp = in.readLong();
- if (Schema.instance.getCFMetaData(keyspace, columnFamily) == null)
+ AbstractBounds<RowPosition> keyRange = AbstractBounds.serializer.deserialize(in, version).toRowBounds();
+
+ CFMetaData metadata = Schema.instance.getCFMetaData(keyspace, columnFamily);
++ if (metadata == null)
+ {
+ String message = String.format("Got paged range command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspace, columnFamily);
+ throw new UnknownColumnFamilyException(message, null);
+ }
- long timestamp = in.readLong();
+ SliceQueryFilter predicate = metadata.comparator.sliceQueryFilterSerializer().deserialize(in, version);
- AbstractBounds<RowPosition> keyRange = AbstractBounds.serializer.deserialize(in, version).toRowBounds();
-
- SliceQueryFilter predicate = SliceQueryFilter.serializer.deserialize(in, version);
-
- ByteBuffer start = ByteBufferUtil.readWithShortLength(in);
- ByteBuffer stop = ByteBufferUtil.readWithShortLength(in);
+ Composite start = metadata.comparator.serializer().deserialize(in);
+ Composite stop = metadata.comparator.serializer().deserialize(in);
int filterCount = in.readInt();
List<IndexExpression> rowFilter = new ArrayList<IndexExpression>(filterCount);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/049a965b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/RangeSliceCommand.java
index 4d2955b,553f111..a7da39f
--- a/src/java/org/apache/cassandra/db/RangeSliceCommand.java
+++ b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
@@@ -182,11 -209,50 +182,18 @@@ class RangeSliceCommandSerializer imple
{
String keyspace = in.readUTF();
String columnFamily = in.readUTF();
-
- long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
+ long timestamp = in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspace, columnFamily);
+ if (metadata == null)
+ {
+ String message = String.format("Got range slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
+ "agreement on table creation." , keyspace, columnFamily);
+ throw new UnknownColumnFamilyException(message, null);
+ }
- IDiskAtomFilter predicate;
- if (version < MessagingService.VERSION_20)
- {
- int scLength = in.readInt();
- ByteBuffer superColumn = null;
- if (scLength > 0)
- {
- byte[] buf = new byte[scLength];
- in.readFully(buf);
- superColumn = ByteBuffer.wrap(buf);
- }
-
- AbstractType<?> comparator;
- if (metadata.cfType == ColumnFamilyType.Super)
- {
- CompositeType type = (CompositeType)metadata.comparator;
- comparator = superColumn == null ? type.types.get(0) : type.types.get(1);
- }
- else
- {
- comparator = metadata.comparator;
- }
-
- predicate = IDiskAtomFilter.Serializer.instance.deserialize(in, version, comparator);
-
- if (metadata.cfType == ColumnFamilyType.Super)
- predicate = SuperColumns.fromSCFilter((CompositeType)metadata.comparator, superColumn, predicate);
- }
- else
- {
- predicate = IDiskAtomFilter.Serializer.instance.deserialize(in, version, metadata.comparator);
- }
+ IDiskAtomFilter predicate = metadata.comparator.diskAtomFilterSerializer().deserialize(in, version);
List<IndexExpression> rowFilter;
int filterCount = in.readInt();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/049a965b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
index 22f795e,ec7c439..65eefaa
--- a/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
@@@ -91,11 -103,64 +91,18 @@@ class SliceByNamesReadCommandSerialize
boolean isDigest = in.readBoolean();
String keyspaceName = in.readUTF();
ByteBuffer key = ByteBufferUtil.readWithShortLength(in);
-
- String cfName;
- ByteBuffer sc = null;
- if (version < MessagingService.VERSION_20)
- {
- QueryPath path = QueryPath.deserialize(in);
- cfName = path.columnFamilyName;
- sc = path.superColumnName;
- }
- else
- {
- cfName = in.readUTF();
- }
-
- long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
-
+ String cfName = in.readUTF();
+ long timestamp = in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, cfName);
+ if (metadata == null)
+ {
+ String message = String.format("Got slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
- "agreement on table creation." , keyspaceName, cfName);
++ "agreement on table creation.", keyspaceName, cfName);
+ throw new UnknownColumnFamilyException(message, null);
+ }
-
- ReadCommand command;
- if (version < MessagingService.VERSION_20)
- {
- AbstractType<?> comparator;
- if (metadata.cfType == ColumnFamilyType.Super)
- {
- CompositeType type = (CompositeType)metadata.comparator;
- comparator = sc == null ? type.types.get(0) : type.types.get(1);
- }
- else
- {
- comparator = metadata.comparator;
- }
-
- IDiskAtomFilter filter = NamesQueryFilter.serializer.deserialize(in, version, comparator);
-
- if (metadata.cfType == ColumnFamilyType.Super)
- filter = SuperColumns.fromSCFilter((CompositeType)metadata.comparator, sc, filter);
-
- // Due to SC compat, it's possible we get back a slice filter at this point
- if (filter instanceof NamesQueryFilter)
- command = new SliceByNamesReadCommand(keyspaceName, key, cfName, timestamp, (NamesQueryFilter)filter);
- else
- command = new SliceFromReadCommand(keyspaceName, key, cfName, timestamp, (SliceQueryFilter)filter);
- }
- else
- {
- NamesQueryFilter filter = NamesQueryFilter.serializer.deserialize(in, version, metadata.comparator);
- command = new SliceByNamesReadCommand(keyspaceName, key, cfName, timestamp, filter);
- }
-
- command.setDigestQuery(isDigest);
- return command;
+ NamesQueryFilter filter = metadata.comparator.namesQueryFilterSerializer().deserialize(in, version);
+ return new SliceByNamesReadCommand(keyspaceName, key, cfName, timestamp, filter).setIsDigestQuery(isDigest);
}
public long serializedSize(ReadCommand cmd, int version)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/049a965b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/SliceFromReadCommand.java
index 2259f22,afca338..80a624d
--- a/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
@@@ -145,11 -164,47 +145,18 @@@ class SliceFromReadCommandSerializer im
boolean isDigest = in.readBoolean();
String keyspaceName = in.readUTF();
ByteBuffer key = ByteBufferUtil.readWithShortLength(in);
-
- String cfName;
- ByteBuffer sc = null;
- if (version < MessagingService.VERSION_20)
- {
- QueryPath path = QueryPath.deserialize(in);
- cfName = path.columnFamilyName;
- sc = path.superColumnName;
- }
- else
- {
- cfName = in.readUTF();
- }
-
- long timestamp = version < MessagingService.VERSION_20 ? System.currentTimeMillis() : in.readLong();
-
+ String cfName = in.readUTF();
+ long timestamp = in.readLong();
CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, cfName);
+ if (metadata == null)
+ {
+ String message = String.format("Got slice command for nonexistent table %s.%s. If the table was just " +
+ "created, this is likely due to the schema not being fully propagated. Please wait for schema " +
- "agreement on table creation." , keyspaceName, cfName);
++ "agreement on table creation.", keyspaceName, cfName);
+ throw new UnknownColumnFamilyException(message, null);
+ }
-
- SliceQueryFilter filter;
- if (version < MessagingService.VERSION_20)
- {
- filter = SliceQueryFilter.serializer.deserialize(in, version);
-
- if (metadata.cfType == ColumnFamilyType.Super)
- filter = SuperColumns.fromSCSliceFilter((CompositeType)metadata.comparator, sc, filter);
- }
- else
- {
- filter = SliceQueryFilter.serializer.deserialize(in, version);
- }
-
- ReadCommand command = new SliceFromReadCommand(keyspaceName, key, cfName, timestamp, filter);
- command.setDigestQuery(isDigest);
- return command;
+ SliceQueryFilter filter = metadata.comparator.sliceQueryFilterSerializer().deserialize(in, version);
+ return new SliceFromReadCommand(keyspaceName, key, cfName, timestamp, filter).setIsDigestQuery(isDigest);
}
public long serializedSize(ReadCommand cmd, int version)