[
https://issues.apache.org/jira/browse/IGNITE-6252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16427115#comment-16427115
]
Yashasvi Kotamraju edited comment on IGNITE-6252 at 4/10/18 6:41 AM:
---------------------------------------------------------------------
Also whenever session refresh() is called to handle Exception, new session is
created. But there might be many preparedstatements created with old
session(since a session object can be shared between different batches). 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 You may have used a PreparedStatement that was created
with another Cluster instance" which would again refresh and create new
cassandra session and so on ...refresh() will be called continuosly and also
the same Exception.
A solution would be to get the Exception message while async executing prepared
statement, and check if the exception message contains the String "You may have
used a PreparedStatement that was created with another Cluster instance". If so
get the new prepared statement with new session created, and restart the Batch
Method again.
was (Author: kotamrajuyashasvi):
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)