ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yashasvi Kotamraju (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-6252) Cassandra Cache Store Session does not retry if prepare statement failed
Date Wed, 11 Apr 2018 08:56:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-6252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16433582#comment-16433582

Yashasvi Kotamraju commented on IGNITE-6252:

Hi Igor

Sorry. I was looking at the final commit changes mentioned here in the ticket. [https://github.com/apache/ignite/pull/2583]. 

But I see there is another issue here. 

*In CassandraSessionImpl.java* 

When handlePreparedStatementClusterError method is called during Exception, the session is
refreshed.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 You
may have used a PreparedStatement that was created with another Cluster instance". Which would
again call handlePreparedStatementClusterError  and refresh session again and this happens
continuously. We have observed continuous cassandra session refresh warnings when this scenario


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

This message was sent by Atlassian JIRA

View raw message