You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Omer van der Horst Jansen (JIRA)" <ji...@apache.org> on 2010/02/02 17:00:22 UTC
[jira] Created: (CASSANDRA-752) get_range_slice returns removed
data
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
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.
[jira] Updated: (CASSANDRA-752) get_range_slice returns removed
data
Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
[ 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.
[jira] Assigned: (CASSANDRA-752) get_range_slice returns removed
data
Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CASSANDRA-752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis reassigned CASSANDRA-752:
----------------------------------------
Assignee: (was: Jonathan Ellis)
> 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
> Attachments: cassandra-752.patch
>
>
> 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.
[jira] Assigned: (CASSANDRA-752) get_range_slice returns removed
data
Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CASSANDRA-752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis reassigned CASSANDRA-752:
----------------------------------------
Assignee: Jonathan Ellis
> 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
> Assignee: Jonathan Ellis
> Priority: Minor
> Fix For: 0.5
>
> Attachments: cassandra-752.patch
>
>
> 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.
[jira] Updated: (CASSANDRA-752) get_range_slice returns removed
data
Posted by "Omer van der Horst Jansen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CASSANDRA-752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Omer van der Horst Jansen updated CASSANDRA-752:
------------------------------------------------
Attachment: cassandra-752.patch
> 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
>
> Attachments: cassandra-752.patch
>
>
> 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.