Вы должны использовать атомную партию на CQL3. Это гарантирует, что либо весь пакет будет успешным, либо вся партия завершится неудачно. Пример из CQL3 docs:
BEGIN BATCH
INSERT INTO users (userid, password, name) VALUES ('user2', '[email protected]', 'second user');
UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
INSERT INTO users (userid, password) VALUES ('user4', '[email protected]');
DELETE name FROM users WHERE userid = 'user1';
APPLY BATCH;
Класс Гектор BatchMutation использует операцию batch_mutate БЕРЕЖЛИВОСТЬ. Это слабее, чем atomic_batch_mutate, что эквивалентно Thrift. batch_mutate является только атомарным для обновлений на одном и том же ключе (может быть разными CF), тогда как atomic_batch_mutate является атомарным для всех обновлений. Я не думаю, что Hector реализовал atomic_batch_mutate, поэтому вам нужно будет перейти на CQL3 и драйвер, поддерживающий CQL3, например. Драйвер java для DataStax.