You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2010/02/04 18:34:28 UTC

[jira] Updated: (CASSANDRA-752) get_range_slice returns removed data

     [ https://issues.apache.org/jira/browse/CASSANDRA-752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-752:
-------------------------------------

         Priority: Minor  (was: Major)
    Fix Version/s: 0.5

> get_range_slice returns removed data
> ------------------------------------
>
>                 Key: CASSANDRA-752
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-752
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.5
>         Environment: Windows XP; Linux 2.6.30, JDK 1.6.0-17
>            Reporter: Omer van der Horst Jansen
>            Priority: Minor
>             Fix For: 0.5
>
>
> m running into an issue with Cassandra 0.5 (the current release version) that sounds exactly like the description of issue CASSANDRA-647. I'm creating a new ticket given that 647 has been closed and this issue may have a different cause.
> I'm using the Thrift Java API to store a couple of columns in a single row. A few seconds after that my application deletes the entire row. A plain Cassandra.Client.get() will then throw a NotFoundException for that particular key, as expected. However, the key will still show up when executing a Cassandra.Client.get_range_slice query.
> Here is some quick and dirty Java code that demonstrates the problem:
> import java.util.List;
> import org.apache.cassandra.service.*;
> import org.apache.thrift.protocol.*;
> import org.apache.thrift.transport.*;
> public class CassandraTestApp
> {
>     /**
>     * Demonstrates CASSANDRA-647 symptom presence in Cassandra 0.5 release.
>     * Requires an unmodified Cassandra configuration except that an
>     * OrderPreservingPartitioner should be used.
>     */
>     public static void main(String[] args) throws Exception
>     {       
>         String keyspace = "Keyspace1";
>         String cf = "Standard1";
>         String key = "testrow1";
>         byte[] columnName = "colname".getBytes();
>         byte[] data = "testdata".getBytes();
>         TTransport transport = new TSocket("localhost", 9160);
>         TProtocol protocol = new TBinaryProtocol(transport);
>        
>         Cassandra.Client client = new Cassandra.Client(protocol);       
>         transport.open();
>         ColumnPath path = new ColumnPath(cf, null, columnName);
>         client.insert(keyspace, key, path, data, System.currentTimeMillis(),
>                 ConsistencyLevel.ONE);
>         Thread.sleep(1000);
>         ColumnPath rowpath = new ColumnPath(cf, null, null);
>         client.remove(keyspace, key, rowpath, System.currentTimeMillis(), ConsistencyLevel.ONE);
>         Thread.sleep(1000);
>         try
>         {
>             ColumnOrSuperColumn cosc = client.get(keyspace, key, path, ConsistencyLevel.ONE);
>            System.out.println("Whoops! NotFoundException not thrown!");
>         }
>         catch (NotFoundException e)
>         {           
>             System.out.println("OK, as expected we got a NotFoundException");
>         }
>         ColumnParent parent = new ColumnParent(cf, null);
>        
>         SlicePredicate predicate = new SlicePredicate();
>         SliceRange range = new SliceRange();
>         range.start = new byte[0];
>         range.finish = new byte[0];
>         predicate.slice_range = range;
>         List<KeySlice> sliceList = client.get_range_slice(keyspace, parent, predicate, "", "", 1000,
>             ConsistencyLevel.ONE);
>         for (KeySlice k : sliceList)
>         {
>             System.out.println("Found key " + k.key);
>             if (key.equals(k.key))
>             {
>                System.out.println("but key " + k.key
>                         + "should have been removed");
>             }
>         }
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.