incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Morton <aa...@thelastpickle.com>
Subject Re: batch mutate with only deletions on 0.7beta2
Date Thu, 16 Dec 2010 02:11:37 GMT
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));

mutationDeletion.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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
    • Unnamed multipart/related (inline, None, 0 bytes)
View raw message