private void createTable()

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);
    }