Search code examples
cassandraastyanax

Astyanax: If a MutationBatch fails halfway, what guarantees do I have?


I know that as of 0.8, Cassandra guarantees that row updates are atomic.

However, if I prepare (using MutationBatch) several row modifications or modifications across several column families, is it guaranteed that the rows will be updated in the order that in which I set them up? e.g. If I have

  • Update CF 1, Row 1
  • Update CF 1, Row 2
  • Update CF 2, Row 3

is it possible for CF 2 to be updated while CF 1 remains unchanged due to failure?

What happens if I had set up:

  • Update CF 1, Row 1, Column A
  • Update CF 1, Row 2
  • Update CF 2, Row 3
  • Update CF 1, Row 1, Column B

Alternatively, should I be preparing instead three MutationBatches and executing them separately?


Solution

  • All updates are done in parallel, so no ordering is ever guaranteed. Partial success will result in the batchlog taking over and finishing the batch starting in 1.2: http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2