cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-7886) Coordinator should not wait for read timeouts when replicas hit Exceptions
Date Tue, 02 Dec 2014 23:28:12 GMT


Tyler Hobbs commented on CASSANDRA-7886:

Thanks for your work so far, [~christianmovi]!  Here's my review of the current patch:

* Instead of using Unavailable when the protocol version is less than 4, use ReadTimeout.
 Unavailable signals that some of the replicas are considered to be down, which is not the
case here.  Plus, ReadTimeout is the error that is currently returned in these circumstances.
* In {{ErrorMessage.encodedSize()}}, there's some commented out code for READ_FAILURE handling.
* Instead of catching and ignoring {{TombstoneOverwhelmingException}} in multiple places,
I suggest you move the logged error message into the TOE message and let it propagate (and
be logged) like any other exception.
* Can you update {{docs/native_protocol_v4.spec}} with these changes?  You can look at the
previous specs to see examples of the "changes from the previous version" section.
* In {{StorageProxy}}, the {{unavailables}} counter should not be incremented for read failures.
 I suggest creating a new, separate failure counter.
* Also in {{StorageProxy}}, there's now quite a bit of code duplication around building error
messages for {{ReadTimeoutExceptions}} and {{ReadFailureExceptions}}.  Can you condense those

I'm also wondering if we should integrate failure notifications into speculative retry.  For
example, if we get a failure response from our single data request replica (before the speculative
retry timer is hit), it seems like we should preemptively send the extra request.  Similarly,
if a failure response indicates that we won't meet the consistency level, we should preemptively
send the extra request.  This doesn't need to be tackled in this ticket, but does anybody
have thoughts on that?

> Coordinator should not wait for read timeouts when replicas hit Exceptions
> --------------------------------------------------------------------------
>                 Key: CASSANDRA-7886
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>         Environment: Tested with Cassandra 2.0.8
>            Reporter: Christian Spriegel
>            Assignee: Christian Spriegel
>            Priority: Minor
>              Labels: protocolv4
>             Fix For: 3.0
>         Attachments: 7886_v1.txt, 7886_v2_trunk.txt, 7886_v3_trunk.txt
> *Issue*
> When you have TombstoneOverwhelmingExceptions occuring in queries, this will cause the
query to be simply dropped on every data-node, but no response is sent back to the coordinator.
Instead the coordinator waits for the specified read_request_timeout_in_ms.
> On the application side this can cause memory issues, since the application is waiting
for the timeout interval for every request.Therefore, if our application runs into TombstoneOverwhelmingExceptions,
then (sooner or later) our entire application cluster goes down :-(
> *Proposed solution*
> I think the data nodes should send a error message to the coordinator when they run into
a TombstoneOverwhelmingException. Then the coordinator does not have to wait for the timeout-interval.

This message was sent by Atlassian JIRA

View raw message