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.