Re: Did CASSANDRA-647 get fixed in 0.5?
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; ListKeySlice 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
Did CASSANDRA-647 get fixed in 0.5?
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; ListKeySlice 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
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; ListKeySlice 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
Re: Did CASSANDRA-647 get fixed in 0.5?
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; ListKeySlice 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
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; ListKeySlice 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