in cassandra/src/main/java/org/apache/ignite/activestore/impl/cassandra/session/CassandraSessionImpl.java [558:591]
private void createTable(KeyValuePersistenceSettings settings) {
String fullName = settings.getKeyspace() + "." + settings.getTable();
int attempt = 0;
Throwable error = null;
String errorMsg = "Failed to create Cassandra table '" + fullName + "'";
RandomSleeper sleeper = newSleeper();
while (attempt < CQL_EXECUTION_ATTEMPTS_COUNT) {
try {
session().execute(settings.getTableDDLStatement());
createTableIndexes(settings);
return;
}
catch (AlreadyExistsException ignored) {
return;
}
catch (Throwable e) {
if (!CassandraHelper.isHostsAvailabilityError(e) && !CassandraHelperEx.isKeyspaceAbsenceError(e)) {
throw new IgniteException(errorMsg, e);
}
if (CassandraHelperEx.isKeyspaceAbsenceError(e)) {
log.warning("Failed to create Cassandra table '" + fullName +
"' cause appropriate keyspace doesn't exist. Keyspace will be created automatically.", e);
createKeyspace(settings);
}
else if (CassandraHelper.isHostsAvailabilityError(e)) {
handleHostsAvailabilityError(e, attempt, errorMsg);
}
error = e;
}
sleeper.sleep();
attempt++;
}
throw new IgniteException(errorMsg, error);
}