in cassandra/src/main/java/org/apache/ignite/activestore/impl/cassandra/session/CassandraSessionImpl.java [765:802]
private void createTableIndexes(KeyValuePersistenceSettings settings) {
String fullName = settings.getKeyspace() + "." + settings.getTable();
List<String> statements = settings.getIndexDDLStatements();
if (statements == null || statements.isEmpty()) {
return;
}
int attempt = 0;
Throwable error = null;
String errorMsg = "Failed to create indexes for Cassandra table '" + fullName + "'";
while (attempt < CQL_EXECUTION_ATTEMPTS_COUNT) {
try {
for (String statement : statements) {
try {
session().execute(statement);
}
catch (AlreadyExistsException ignored) {
}
catch (Throwable e) {
if (!(e instanceof InvalidQueryException) || !e.getMessage().equals("Index already exists")) {
throw new IgniteException(errorMsg, e);
}
}
}
return;
}
catch (Throwable e) {
if (CassandraHelper.isHostsAvailabilityError(e)) {
handleHostsAvailabilityError(e, attempt, errorMsg);
}
else {
throw new IgniteException(errorMsg, e);
}
error = e;
}
attempt++;
}
throw new IgniteException(errorMsg, error);
}