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
>
>
>
>
>

Reply via email to