incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nick Santini <nick.sant...@kaseya.com>
Subject Re: batch mutate with only deletions on 0.7beta2
Date Thu, 16 Dec 2010 02:53:58 GMT
ok, after a few tests and debugs ive found that is actually deleting those
columns, so great

but the problem is different than what I thought it was. Im running the test
which does:
- create and save a row (here I save the secondary indexes)
- find the row by a secondary index
- delete the row (here I update the secondary indexes deleting the
corresponding columns)
- find the row by the same index -> this shouldnt return my row

but it does!

so apparently the deletion is not getting there when I read again, even if I
put the thread to sleep 10 seconds
funny is that, after the test finished, I try to get that row manually but
all the deletes have gone through, even the secondary index ones



Nicolas Santini


On Thu, Dec 16, 2010 at 3:11 PM, Aaron Morton <aaron@thelastpickle.com>wrote:

> Nick,
> The docs for the DateTime in .net say it's resolution is only 10ms. You
> should try to find a higher resolution time source to
> avoid accidentally sending multiple mutations (including deletions) with the
> same time stamp. I'm not sure it's the cause of this problem, but it can
> result in cases where a delete is not applied because there is an insert
> with the same timestamp.
>
> In python I use the seconds since epoch with 6 decimal places shifted left.
>
> Also, turn up the cassanfra logging level to DEBUG and make sure you are
> sending what you think you are. Chances are you are sending the wrong data
> in the request.
>
> Let me know how you get on.
> Aaron
>
> On 16 Dec, 2010,at 02:11 PM, Nick Santini <nick.santini@kaseya.com> wrote:
>
> Im using thrift directly on C#
> the code that is trying to delete all the columns referencing the row im
> deleting on the secondary index rows looks like this
>
> Mutation mutation = new Mutation();
> mutation.Deletion = new Deletion();
> mutation.Deletion.Timestamp = DateTime.Now.ToBinary();
>
> List<byte[]> predicate = new List<byte[]>();
> predicate.Add(utf8.GetBytes(columnName));
>
> mutation.Deletion.Predicate = new SlicePredicate()
> {
>    Column_names = predicate
> };
>
> mutations.Add(mutation);
>
> entry = new Dictionary<string, List<Mutation>>();
> entry.Add(cfName, mutations);
>
> mutation_map.Add(utf8EncodingInstance.GetBytes(secIndexKey), entry);
>
> CassandraClient.batch_mutate(mutation_map, ConsistencyLevel.ONE);
>
>
> now, the code where I inserted the references is exactly the same, but
> without the deletion part in the mutations
>
>
> Nicolas Santini
>
>
> On Thu, Dec 16, 2010 at 12:55 PM, Tyler Hobbs <tyler@riptano.com> wrote:
>
>> What client are you using? If you're not using a client, what does your
>> deletion code look like?
>>
>> - Tyler
>>
>>
>>
>> On Wed, Dec 15, 2010 at 4:58 PM, Nick Santini <nick.santini@kaseya.com>wrote:
>>
>>> thats not exactly what im seeing, is not a row, but columns on a row that
>>> i was deleting
>>>
>>> ie:
>>> suppose i have a row where the key is sec_index_1 where i have two
>>> columns with information about other row keys
>>> sec_index_1 { key1:key1, key2:key2 }
>>>
>>> then i add a deletion for the column named key2, run it through batch
>>> mutate for the key sec_index_1
>>>
>>> then i load the row again to see all my "references" stored in columns,
>>> and im still getting
>>> key1, key2
>>>
>>> Nicolas Santini
>>>
>>>
>>>
>>> On Thu, Dec 16, 2010 at 11:52 AM, Tyler Hobbs <tyler@riptano.com> wrote:
>>>
>>>> There's no problem doing deletions with batch_mutate, but you are
>>>> probably seeing this:
>>>>
>>>> http://wiki.apache.org/cassandra/FAQ#range_ghosts
>>>>
>>>> - Tyler
>>>>
>>>>
>>>>
>>>> On Wed, Dec 15, 2010 at 4:26 PM, Nick Santini <nick.santini@kaseya.com>wrote:
>>>>
>>>>> since the 0.7beta2 version doesnt support indexes for Super CF or for
>>>>> columns that you might not now the name yet, im supporting them manually
by
>>>>> adding a row on the same CF where the key is the name of the column plus
the
>>>>> value, and in the columns hold the key to the referenced rows
>>>>>
>>>>> this works as in i can actually find my rows using the secondary index
>>>>> rows
>>>>>
>>>>> but when i try to delete the original row i want to update my secondary
>>>>> indexs, so i create a mutation map in the same way i did it when i saved
my
>>>>> information, but this time it only contains deletions for those secondary
>>>>> indexs rows and only for the column referencing to the row being deleted.
>>>>> but this doesnt seem to work, it comes back successfully (no erros),
>>>>> but im still able to find the references to the deleted row in those
>>>>> secondary indexes
>>>>>
>>>>> is there any issue trying to run a batch_mutate with only deletions?
>>>>>
>>>>> thanks
>>>>>
>>>>> Nicolas Santini
>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message