[
https://issues.apache.org/jira/browse/IGNITE-6252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16427115#comment-16427115
]
Yashasvi Kotamraju commented on IGNITE-6252:
--------------------------------------------
Also whenever session refresh() is called to handle Exception, new session is
created. But there might be many preparedstatements created with old session.
So when we execute the preparedstatements created with old session on a new
session created , we get the the Exception
"com.datastax.driver.core.exceptions.InvalidQueryException Tried to execute
unknown prepared query " which would again refresh and create new cassandra
session and so on ...refresh() will be called continuosly
> 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
> Assignee: Igor Rudyak
> Priority: Major
> Fix For: 2.5
>
>
> 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
(v7.6.3#76005)