[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cassandra-commits
Subject:    svn commit: r904687 - in /incubator/cassandra/trunk: ./ src/java/org/
From:       jbellis () apache ! org
Date:       2010-01-30 0:10:57
Message-ID: 20100130001057.65CCE23888C2 () eris ! apache ! org
[Download RAW message or body]

Author: jbellis
Date: Sat Jan 30 00:10:56 2010
New Revision: 904687

URL: http://svn.apache.org/viewvc?rev=904687&view=rev
Log:
merge from 0.5

Modified:
    incubator/cassandra/trunk/   (props changed)
    incubator/cassandra/trunk/src/java/org/   (props changed)
    incubator/cassandra/trunk/src/java/org/apache/cassandra/io/Streaming.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
  incubator/cassandra/trunk/test/system/test_server.py
    incubator/cassandra/trunk/test/unit/org/   (props changed)
    incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java


Propchange: incubator/cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jan 30 00:10:56 2010
@@ -1,3 +1,4 @@
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
 /incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
-/incubator/cassandra/branches/cassandra-0.5:888872-903502
+/incubator/cassandra/branches/cassandra-0.5:888872-904679
+/incubator/cassandra/trunk:749219-888871

Propchange: incubator/cassandra/trunk/src/java/org/
            ('svn:mergeinfo' removed)

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/io/Streaming.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/io/Streaming.java?rev=904687&r1=904686&r2=904687&view=diff
 ==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/io/Streaming.java \
                (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/io/Streaming.java Sat Jan \
30 00:10:56 2010 @@ -173,11 +173,12 @@
                 StreamInitiateMessage biMsg = \
                StreamInitiateMessage.serializer().deserialize(new \
                DataInputStream(bufIn));
                 StreamContextManager.StreamContext[] streamContexts = \
biMsg.getStreamContext();  
-                if (streamContexts.length == 0 && \
StorageService.instance.isBootstrapMode()) +                if (streamContexts.length \
== 0)  {
                     if (logger.isDebugEnabled())
                         logger.debug("no data needed from " + message.getFrom());
-                    StorageService.instance.removeBootstrapSource(message.getFrom(), \
new String(message.getHeader(Streaming.TABLE_NAME))); +                    if \
(StorageService.instance.isBootstrapMode()) +                        \
StorageService.instance.removeBootstrapSource(message.getFrom(), new \
String(message.getHeader(Streaming.TABLE_NAME)));  return;
                 }
 

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
                
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=904687&r1=904686&r2=904687&view=diff
 ==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java \
                (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java \
Sat Jan 30 00:10:56 2010 @@ -276,41 +276,6 @@
         return column;
     }
 
-    /** no values will be mapped to keys with no data */
-    private Map<String, Collection<IColumn>> multigetColumns(List<ReadCommand> \
                commands, ConsistencyLevel consistency_level)
-    throws InvalidRequestException, UnavailableException, TimedOutException
-    {
-        Map<String, ColumnFamily> cfamilies = readColumnFamily(commands, \
                consistency_level);
-        Map<String, Collection<IColumn>> columnFamiliesMap = new HashMap<String, \
                Collection<IColumn>>();
-
-        for (ReadCommand command: commands)
-        {
-            ColumnFamily cfamily = cfamilies.get(command.key);
-            if (cfamily == null)
-                continue;
-
-            Collection<IColumn> columns = null;
-            if (command.queryPath.superColumnName != null)
-            {
-                IColumn column = \
                cfamily.getColumn(command.queryPath.superColumnName);
-                if (column != null)
-                {
-                    columns = column.getSubColumns();
-                }
-            }
-            else
-            {
-                columns = cfamily.getSortedColumns();
-            }
-
-            if (columns != null && columns.size() != 0)
-            {
-                columnFamiliesMap.put(command.key, columns);
-            }
-        }
-        return columnFamiliesMap;
-    }
-
     /** always returns a ColumnOrSuperColumn for each key, even if there is no data \
                for it */
     public Map<String, ColumnOrSuperColumn> multiget(String table, List<String> \
                keys, ColumnPath column_path, ConsistencyLevel consistency_level)
     throws InvalidRequestException, UnavailableException, TimedOutException
@@ -338,36 +303,20 @@
         }
 
         Map<String, ColumnOrSuperColumn> columnFamiliesMap = new HashMap<String, \
                ColumnOrSuperColumn>();
-        Map<String, Collection<IColumn>> columnsMap = multigetColumns(commands, \
consistency_level); +        Map<String, ColumnFamily> cfamilies = \
readColumnFamily(commands, consistency_level);  
         for (ReadCommand command: commands)
         {
-            ColumnOrSuperColumn columnorsupercolumn;
-
-            Collection<IColumn> columns = columnsMap.get(command.key);
-            if (columns == null)
+            ColumnFamily cf = cfamilies.get(command.key);
+            if (cf == null)
             {
-               columnorsupercolumn = new ColumnOrSuperColumn();
+                columnFamiliesMap.put(command.key, new ColumnOrSuperColumn());
             }
             else
             {
-                assert columns.size() == 1;
-                IColumn column = columns.iterator().next();
-
-
-                if (column.isMarkedForDelete())
-                {
-                    columnorsupercolumn = new ColumnOrSuperColumn();
-                }
-                else
-                {
-                    columnorsupercolumn = column instanceof \
                org.apache.cassandra.db.Column
-                                          ? createColumnOrSuperColumn_Column(new \
                Column(column.name(), column.value(), column.timestamp()))
-                                          : \
createColumnOrSuperColumn_SuperColumn(new SuperColumn(column.name(), \
                thriftifySubColumns(column.getSubColumns())));
-                }
-
+                List<ColumnOrSuperColumn> tcolumns = thriftifyColumnFamily(cf, \
command.queryPath.superColumnName != null, false); +                \
columnFamiliesMap.put(command.key, tcolumns.size() > 0 ? tcolumns.iterator().next() : \
new ColumnOrSuperColumn());  }
-            columnFamiliesMap.put(command.key, columnorsupercolumn);
         }
 
         return columnFamiliesMap;
@@ -381,44 +330,9 @@
 
         checkLoginDone();
 
-        return multigetCountInternal(table, Arrays.asList(key), column_parent, \
                consistency_level).get(key);
-    }
-
-    private Map<String, Integer> multigetCountInternal(String table, List<String> \
                keys, ColumnParent column_parent, ConsistencyLevel consistency_level)
-    throws InvalidRequestException, UnavailableException, TimedOutException
-    {
-        // validateColumnParent assumes we require simple columns; g_c_c is the only
-        // one of the columnParent-taking apis that can also work at the SC level.
-        // so we roll a one-off validator here.
-        String cfType = ThriftValidation.validateColumnFamily(table, \
                column_parent.column_family);
-        if (cfType.equals("Standard") && column_parent.super_column != null)
-        {
-            throw new InvalidRequestException("columnfamily alone is required for \
                standard CF " + column_parent.column_family);
-        }
-
-        List<ReadCommand> commands = new ArrayList<ReadCommand>();
-        for (String key: keys)
-        {
-            ThriftValidation.validateKey(key);
-            commands.add(new SliceFromReadCommand(table, key, column_parent, \
                ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, true, \
                Integer.MAX_VALUE));
-        }
-
-        Map<String, Integer> columnFamiliesMap = new HashMap<String, Integer>();
-        Map<String, Collection<IColumn>> columnsMap = multigetColumns(commands, \
                consistency_level);
-
-        for (ReadCommand command: commands)
-        {
-            Collection<IColumn> columns = columnsMap.get(command.key);
-            if(columns == null)
-            {
-               columnFamiliesMap.put(command.key, 0);
-            }
-            else
-            {
-               columnFamiliesMap.put(command.key, columns.size());
-            }
-        }
-        return columnFamiliesMap;
+        SliceRange range = new SliceRange(ArrayUtils.EMPTY_BYTE_ARRAY, \
ArrayUtils.EMPTY_BYTE_ARRAY, false, Integer.MAX_VALUE); +        SlicePredicate \
predicate = new SlicePredicate().setSlice_range(range); +        return \
get_slice(table, key, column_parent, predicate, consistency_level).size();  }
 
     public void insert(String table, String key, ColumnPath column_path, byte[] \
value, long timestamp, ConsistencyLevel consistency_level)

Modified: incubator/cassandra/trunk/test/system/test_server.py
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/system/test_server.py?rev=904687&r1=904686&r2=904687&view=diff
 ==============================================================================
--- incubator/cassandra/trunk/test/system/test_server.py (original)
+++ incubator/cassandra/trunk/test/system/test_server.py Sat Jan 30 00:10:56 2010
@@ -675,6 +675,18 @@
         assert columns == [Column(_i64(5), 'value5', 6)], columns
 
 
+    def test_super_cf_resurrect_subcolumn(self):
+        key = 'vijay'
+        client.insert('Keyspace1', key, ColumnPath('Super1', 'sc1', _i64(4)), \
'value4', 0, ConsistencyLevel.ONE) +
+        client.remove('Keyspace1', key, ColumnPath('Super1', 'sc1'), 1, \
ConsistencyLevel.ONE) +
+        client.insert('Keyspace1', key, ColumnPath('Super1', 'sc1', _i64(4)), \
'value4', 2, ConsistencyLevel.ONE) +
+        result = client.get('Keyspace1', key, ColumnPath('Super1', 'sc1'), \
ConsistencyLevel.ONE) +        assert result.super_column.columns is not None, \
result.super_column +
+
     def test_empty_range(self):
         assert client.get_range_slice('Keyspace1', ColumnParent('Standard1'), \
SlicePredicate(column_names=['c1', 'c1']), '', '', 1000, ConsistencyLevel.ONE) == []  \
_insert_simple()

Propchange: incubator/cassandra/trunk/test/unit/org/
            ('svn:mergeinfo' removed)

Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java
                
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java?rev=904687&r1=904686&r2=904687&view=diff
 ==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java \
                (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java \
Sat Jan 30 00:10:56 2010 @@ -158,4 +158,33 @@
         assert subColumns.iterator().next().timestamp() == 2;
     }
 
+    @Test
+    public void testRemoveSuperColumnResurrection() throws IOException, \
ExecutionException, InterruptedException +    {
+        ColumnFamilyStore store = \
Table.open("Keyspace1").getColumnFamilyStore("Super2"); +        RowMutation rm;
+        String key = "keyC";
+
+        // add data
+        rm = new RowMutation("Keyspace1", key);
+        addMutation(rm, "Super2", "SC1", 1, "val1", 0);
+        rm.apply();
+
+        // remove
+        rm = new RowMutation("Keyspace1", key);
+        rm.delete(new QueryPath("Super2", "SC1".getBytes()), 1);
+        rm.apply();
+        assertNull(store.getColumnFamily(new NamesQueryFilter(key, new \
QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE)); +
+        // resurrect
+        rm = new RowMutation("Keyspace1", key);
+        addMutation(rm, "Super2", "SC1", 1, "val2", 2);
+        rm.apply();
+
+        // validate
+        ColumnFamily resolved = store.getColumnFamily(new NamesQueryFilter(key, new \
QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE); +        \
Collection<IColumn> subColumns = \
resolved.getSortedColumns().iterator().next().getSubColumns(); +        assert \
subColumns.size() == 1; +        assert subColumns.iterator().next().timestamp() == \
2; +    }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic