Search in sources :

Example 26 with Row

use of com.datastax.driver.core.Row in project aroma-data-operations by RedRoma.

the class MappersTest method rowFor.

private Row rowFor(AuthenticationToken token) {
    Row tokenRow = mock(Row.class);
    when(tokenRow.getTimestamp(Tables.Tokens.TIME_OF_EXPIRATION)).thenReturn(new Date(token.timeOfExpiration));
    when(tokenRow.getTimestamp(Tables.Tokens.TIME_OF_CREATION)).thenReturn(new Date(token.timeOfCreation));
    when(tokenRow.getUUID(Tables.Tokens.ORG_ID)).thenReturn(UUID.fromString(token.organizationId));
    when(tokenRow.getUUID(Tables.Tokens.TOKEN_ID)).thenReturn(UUID.fromString(token.tokenId));
    when(tokenRow.getString(Tables.Tokens.TOKEN_TYPE)).thenReturn(token.tokenType.toString());
    when(tokenRow.getString(Tables.Tokens.TOKEN_STATUS)).thenReturn(token.status.toString());
    when(tokenRow.getUUID(Tables.Tokens.OWNER_ID)).thenReturn(UUID.fromString(token.ownerId));
    when(tokenRow.getString(Tables.Tokens.OWNER_NAME)).thenReturn(token.ownerName);
    return tokenRow;
}
Also used : Row(com.datastax.driver.core.Row)

Example 27 with Row

use of com.datastax.driver.core.Row in project aroma-data-operations by RedRoma.

the class MappersTest method testEventMapper.

@Test
public void testEventMapper() throws TException {
    Function<Row, Event> instance = Mappers.eventMapper();
    assertThat(instance, notNullValue());
    Row eventRow = rowFor(event);
    Event result = instance.apply(eventRow);
    assertThat(result, is(event));
}
Also used : Event(tech.aroma.thrift.events.Event) Row(com.datastax.driver.core.Row) Test(org.junit.Test)

Example 28 with Row

use of com.datastax.driver.core.Row in project ignite by apache.

the class CassandraSessionImpl method execute.

/** {@inheritDoc} */
@Override
public void execute(BatchLoaderAssistant assistant) {
    int attempt = 0;
    String errorMsg = "Failed to execute Cassandra " + assistant.operationName() + " operation";
    Throwable error = new IgniteException(errorMsg);
    RandomSleeper sleeper = newSleeper();
    incrementSessionRefs();
    try {
        while (attempt < CQL_EXECUTION_ATTEMPTS_COUNT) {
            if (attempt != 0)
                log.warning("Trying " + (attempt + 1) + " attempt to load Ignite cache");
            Statement statement = tuneStatementExecutionOptions(assistant.getStatement());
            try {
                ResultSetFuture fut = session().executeAsync(statement);
                ResultSet resSet = fut.getUninterruptibly();
                if (resSet == null || !resSet.iterator().hasNext())
                    return;
                for (Row row : resSet) assistant.process(row);
                return;
            } catch (Throwable e) {
                error = e;
                if (CassandraHelper.isTableAbsenceError(e))
                    return;
                else if (CassandraHelper.isHostsAvailabilityError(e))
                    handleHostsAvailabilityError(e, attempt, errorMsg);
                else if (CassandraHelper.isPreparedStatementClusterError(e))
                    handlePreparedStatementClusterError(e);
                else
                    // For an error which we don't know how to handle, we will not try next attempts and terminate.
                    throw new IgniteException(errorMsg, e);
            }
            sleeper.sleep();
            attempt++;
        }
    } catch (Throwable e) {
        error = e;
    } finally {
        decrementSessionRefs();
    }
    log.error(errorMsg, error);
    throw new IgniteException(errorMsg, error);
}
Also used : ResultSetFuture(com.datastax.driver.core.ResultSetFuture) IgniteException(org.apache.ignite.IgniteException) PreparedStatement(com.datastax.driver.core.PreparedStatement) BoundStatement(com.datastax.driver.core.BoundStatement) BatchStatement(com.datastax.driver.core.BatchStatement) Statement(com.datastax.driver.core.Statement) ResultSet(com.datastax.driver.core.ResultSet) RandomSleeper(org.apache.ignite.cache.store.cassandra.common.RandomSleeper) Row(com.datastax.driver.core.Row)

Example 29 with Row

use of com.datastax.driver.core.Row in project ignite by apache.

the class CassandraSessionImpl method execute.

/** {@inheritDoc} */
@Override
public <R, V> R execute(BatchExecutionAssistant<R, V> assistant, Iterable<? extends V> data) {
    if (data == null || !data.iterator().hasNext())
        return assistant.processedData();
    int attempt = 0;
    String errorMsg = "Failed to execute Cassandra " + assistant.operationName() + " operation";
    Throwable error = new IgniteException(errorMsg);
    RandomSleeper sleeper = newSleeper();
    int dataSize = 0;
    incrementSessionRefs();
    try {
        while (attempt < CQL_EXECUTION_ATTEMPTS_COUNT) {
            if (attempt != 0) {
                log.warning("Trying " + (attempt + 1) + " attempt to execute Cassandra batch " + assistant.operationName() + " operation to process rest " + (dataSize - assistant.processedCount()) + " of " + dataSize + " elements");
            }
            //clean errors info before next communication with Cassandra
            Throwable unknownEx = null;
            Throwable tblAbsenceEx = null;
            Throwable hostsAvailEx = null;
            Throwable prepStatEx = null;
            List<Cache.Entry<Integer, ResultSetFuture>> futResults = new LinkedList<>();
            PreparedStatement preparedSt = prepareStatement(assistant.getTable(), assistant.getStatement(), assistant.getPersistenceSettings(), assistant.tableExistenceRequired());
            if (preparedSt == null)
                return null;
            int seqNum = 0;
            for (V obj : data) {
                if (!assistant.alreadyProcessed(seqNum)) {
                    try {
                        Statement statement = tuneStatementExecutionOptions(assistant.bindStatement(preparedSt, obj));
                        ResultSetFuture fut = session().executeAsync(statement);
                        futResults.add(new CacheEntryImpl<>(seqNum, fut));
                    } catch (Throwable e) {
                        if (CassandraHelper.isTableAbsenceError(e)) {
                            // If there are table absence error and it is not required for the operation we can return.
                            if (!assistant.tableExistenceRequired())
                                return assistant.processedData();
                            tblAbsenceEx = e;
                            handleTableAbsenceError(assistant.getTable(), assistant.getPersistenceSettings());
                        } else if (CassandraHelper.isHostsAvailabilityError(e)) {
                            hostsAvailEx = e;
                            // Handle host availability only once.
                            if (hostsAvailEx == null)
                                handleHostsAvailabilityError(e, attempt, errorMsg);
                        } else if (CassandraHelper.isPreparedStatementClusterError(e)) {
                            prepStatEx = e;
                            handlePreparedStatementClusterError(e);
                        } else
                            unknownEx = e;
                    }
                }
                seqNum++;
            }
            dataSize = seqNum;
            // For an error which we don't know how to handle, we will not try next attempts and terminate.
            if (unknownEx != null)
                throw new IgniteException(errorMsg, unknownEx);
            // Remembering any of last errors.
            if (tblAbsenceEx != null)
                error = tblAbsenceEx;
            else if (hostsAvailEx != null)
                error = hostsAvailEx;
            else if (prepStatEx != null)
                error = prepStatEx;
            // Clean errors info before next communication with Cassandra.
            unknownEx = null;
            tblAbsenceEx = null;
            hostsAvailEx = null;
            prepStatEx = null;
            for (Cache.Entry<Integer, ResultSetFuture> futureResult : futResults) {
                try {
                    ResultSet resSet = futureResult.getValue().getUninterruptibly();
                    Row row = resSet != null && resSet.iterator().hasNext() ? resSet.iterator().next() : null;
                    if (row != null)
                        assistant.process(row, futureResult.getKey());
                } catch (Throwable e) {
                    if (CassandraHelper.isTableAbsenceError(e))
                        tblAbsenceEx = e;
                    else if (CassandraHelper.isHostsAvailabilityError(e))
                        hostsAvailEx = e;
                    else if (CassandraHelper.isPreparedStatementClusterError(e))
                        prepStatEx = e;
                    else
                        unknownEx = e;
                }
            }
            // For an error which we don't know how to handle, we will not try next attempts and terminate.
            if (unknownEx != null)
                throw new IgniteException(errorMsg, unknownEx);
            // If there are no errors occurred it means that operation successfully completed and we can return.
            if (tblAbsenceEx == null && hostsAvailEx == null && prepStatEx == null)
                return assistant.processedData();
            if (tblAbsenceEx != null) {
                // If there are table absence error and it is not required for the operation we can return.
                if (!assistant.tableExistenceRequired())
                    return assistant.processedData();
                error = tblAbsenceEx;
                handleTableAbsenceError(assistant.getTable(), assistant.getPersistenceSettings());
            }
            if (hostsAvailEx != null) {
                error = hostsAvailEx;
                handleHostsAvailabilityError(hostsAvailEx, attempt, errorMsg);
            }
            if (prepStatEx != null) {
                error = prepStatEx;
                handlePreparedStatementClusterError(prepStatEx);
            }
            if (!CassandraHelper.isTableAbsenceError(error))
                sleeper.sleep();
            attempt++;
        }
    } catch (Throwable e) {
        error = e;
    } finally {
        decrementSessionRefs();
    }
    errorMsg = "Failed to process " + (dataSize - assistant.processedCount()) + " of " + dataSize + " elements, during " + assistant.operationName() + " operation with Cassandra";
    log.error(errorMsg, error);
    throw new IgniteException(errorMsg, error);
}
Also used : ResultSetFuture(com.datastax.driver.core.ResultSetFuture) PreparedStatement(com.datastax.driver.core.PreparedStatement) BoundStatement(com.datastax.driver.core.BoundStatement) BatchStatement(com.datastax.driver.core.BatchStatement) Statement(com.datastax.driver.core.Statement) PreparedStatement(com.datastax.driver.core.PreparedStatement) LinkedList(java.util.LinkedList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) IgniteException(org.apache.ignite.IgniteException) ResultSet(com.datastax.driver.core.ResultSet) RandomSleeper(org.apache.ignite.cache.store.cassandra.common.RandomSleeper) Row(com.datastax.driver.core.Row) Cache(javax.cache.Cache)

Example 30 with Row

use of com.datastax.driver.core.Row in project cassandra-driver-mapping by valchkou.

the class MappingSession method save.

/**
     * Save Entity. If Entity has @Version field, in attempt to save not the
     * latest version null is returned.
     * 
     * @param entity
     * @param options WriteOptions
     * @return ResultSetFuture.
     */
public <E> E save(E entity, WriteOptions options) {
    maybeSync(entity.getClass());
    Statement stmt = MappingBuilder.prepareSave(entity, options, keyspace);
    ResultSet rs = session.execute(stmt);
    EntityTypeMetadata entityMetadata = EntityTypeParser.getEntityMetadata(entity.getClass());
    if (entityMetadata.hasVersion()) {
        Row row = rs.one();
        if (!(row != null && rs.wasApplied())) {
            return null;
        }
    }
    return entity;
}
Also used : EntityTypeMetadata(com.datastax.driver.mapping.meta.EntityTypeMetadata) RegularStatement(com.datastax.driver.core.RegularStatement) PreparedStatement(com.datastax.driver.core.PreparedStatement) BoundStatement(com.datastax.driver.core.BoundStatement) BuiltStatement(com.datastax.driver.core.querybuilder.BuiltStatement) Statement(com.datastax.driver.core.Statement) ResultSet(com.datastax.driver.core.ResultSet) Row(com.datastax.driver.core.Row)

Aggregations

Row (com.datastax.driver.core.Row)59 ResultSet (com.datastax.driver.core.ResultSet)35 Test (org.junit.Test)23 Session (com.datastax.driver.core.Session)10 ArrayList (java.util.ArrayList)10 BoundStatement (com.datastax.driver.core.BoundStatement)9 Cluster (com.datastax.driver.core.Cluster)9 Statement (com.datastax.driver.core.Statement)7 List (java.util.List)6 ImmutableList (com.google.common.collect.ImmutableList)5 HashSet (java.util.HashSet)5 PreparedStatement (com.datastax.driver.core.PreparedStatement)4 Select (com.datastax.driver.core.querybuilder.Select)4 ByteBuffer (java.nio.ByteBuffer)4 BatchStatement (com.datastax.driver.core.BatchStatement)3 Update (com.datastax.driver.core.querybuilder.Update)3 HashMap (java.util.HashMap)3 ProtocolVersion (org.apache.cassandra.transport.ProtocolVersion)3 TypeHint (org.apache.flink.api.common.typeinfo.TypeHint)3 ColumnDefinitions (com.datastax.driver.core.ColumnDefinitions)2