ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sunny Chan (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-6252) Cassandra Cache Store Session does not retry if prepare statement failed
Date Mon, 04 Sep 2017 09:19:02 GMT
Sunny Chan created IGNITE-6252:

             Summary: Cassandra Cache Store Session does not retry if prepare statement failed
                 Key: IGNITE-6252
                 URL: https://issues.apache.org/jira/browse/IGNITE-6252
             Project: Ignite
          Issue Type: Bug
          Components: cassandra
    Affects Versions: 2.1, 2.0
            Reporter: Sunny Chan

During our testing, we have found that certain warning about prepared statement:

2017-08-31 11:27:19.479 org.apache.ignite.cache.store.cassandra.CassandraCacheStore flusher-0-#265%xxxx%
WARN CassandraCacheStore - Prepared statement cluster error detected, refreshing Cassandra
com.datastax.driver.core.exceptions.InvalidQueryException: Tried to execute unknown prepared
query : 0xc7647611fd755386ef63478ee7de577b. You may have used a PreparedStatement that was
created with another Cluster instance.

We notice that after this warning occurs some of the data didn't persist properly in cassandra
cache. After further examining the Ignite's CassandraSessionImpl code in method execute(BatchExecutionAssistance,Iterable),
we found that at around [line 283|https://github.com/apache/ignite/blob/86bd544a557663bce497134f7826be6b24d53330/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/session/CassandraSessionImpl.java#L283],
if the prepare statement fails in the asnyc call, it will not retry the operation as the error
is stored in [line 269|https://github.com/apache/ignite/blob/86bd544a557663bce497134f7826be6b24d53330/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/session/CassandraSessionImpl.java#L269]
and cleared in [line 277|https://github.com/apache/ignite/blob/86bd544a557663bce497134f7826be6b24d53330/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/session/CassandraSessionImpl.java#L277]
but it was not checked again after going through the [ResultSetFuture |https://github.com/apache/ignite/blob/86bd544a557663bce497134f7826be6b24d53330/modules/cassandra/store/src/main/java/org/apache/ignite/cache/store/cassandra/session/CassandraSessionImpl.java#L307].

I believe in line 307 you should check for error != null such that any failure will be retry.
Also potentially in line 312 we will need to check isTableAbsenceError(error).

This message was sent by Atlassian JIRA

View raw message