[ 
https://issues.apache.org/jira/browse/IGNITE-6252?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sunny Chan updated IGNITE-6252:
-------------------------------
    Description: 
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 session
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.




  was:
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 session
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).






> 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.0, 2.1
>            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 session
> 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.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to