Here it is: https://issues.apache.org/jira/browse/CASSANDRA-752
________________________________ From: Jonathan Ellis <jbel...@gmail.com> To: cassandra-user@incubator.apache.org Sent: Mon, February 1, 2010 5:22:13 PM Subject: Re: Did CASSANDRA-647 get fixed in 0.5? Can you create a ticket for this? Thanks! On Mon, Feb 1, 2010 at 4:11 PM, Omer van der Horst Jansen <ome...@yahoo.com> wrote: > I checked out the 0.5 branch and ran ant release (on my linux box). > Installed the new tar.gz and ran the test on my Windows laptop as before but > got the same result -- the key isn't deleted from the perspective of > get_range_slice. > > Omer > > ________________________________ > From: Jonathan Ellis <jbel...@gmail.com> > To: cassandra-user@incubator.apache.org > Sent: Mon, February 1, 2010 4:52:17 PM > Subject: Re: Did CASSANDRA-647 get fixed in 0.5? > > 647 was committed for 0.5, yes, but CASSANDRA-703 was not. Can you > try the 0.5 branch and see if it is fixed there? > > On Mon, Feb 1, 2010 at 3:26 PM, Omer van der Horst Jansen > <ome...@yahoo.com> wrote: >> I'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 >> 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 Cassandra647TestApp >> { >> /** >> * Demonstrates >> CASSANDRA-647 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, 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"); >> } >> } >> } >> } >> >> Am I using the API correctly in the code above? >> >> -Omer van der Horst Jansen >> >> >> >> >> > >