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 <tylerho...@apache.org>
Authored: Thu May 7 10:31:52 2015 -0500
Committer: Tyler Hobbs <tylerho...@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)

Reply via email to