[ 
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)

Reply via email to