private void queue(List<QCMutation> mutations) {
List<QCMutation> failures = new ArrayList<>();
Map<String,TabletServerMutations<QCMutation>> binnedMutations = new HashMap<>();
try {
locator.binMutations(context, mutations, binnedMutations, failures);
if (failures.size() == mutations.size())
if (!Tables.exists(context, tableId))
throw new TableDeletedException(tableId.canonicalID());
else if (Tables.getTableState(context, tableId) == TableState.OFFLINE)
throw new TableOfflineException(Tables.getTableOfflineMsg(context, tableId));
} catch (Exception e) {
for (QCMutation qcm : mutations)
qcm.queueResult(new Result(e, qcm, null));
failures.clear();
binnedMutations.clear();
}
if (failures.size() > 0)
queueRetry(failures, null);
for (Entry<String,TabletServerMutations<QCMutation>> entry : binnedMutations.entrySet()) {
queue(entry.getKey(), entry.getValue());
}
}