[
https://issues.apache.org/jira/browse/CASSANDRA-1664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12934096#action_12934096
]
Jonathan Ellis commented on CASSANDRA-1664:
-------------------------------------------
The right way to do this is is at the responsehandler level. Changing the
semantics of the get*endpoint methods is not the way to go.
For EACH_QUORUM I think we'll need a new ResponseHandler class, but for
LOCAL_QUORUM I don't think that's necessary. I would recommend moving the
Message creation + sending code from StorageProxy.strongRead into a QRH method.
Then, all you need to do is pass the [live] natural endpoints list to the
AbstractReplicationStrategy.getQuorumResponseHandler call, which could strip
out replicas not in the local DC for CL.LOCAL_QUORUM.
> NetworkTopologyStrategy + DCQUORUM
> ----------------------------------
>
> Key: CASSANDRA-1664
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1664
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.7 beta 1
> Environment: Linux 2.6.18
> JVM 6b11
> Reporter: ivan
> Fix For: 0.7.1
>
> Attachments: 1664_v2.txt, ntrs.patch
>
>
> We experience TSocket: timed out reading expections randomly using DCQUORUM.
> In log we see that sometimes responses are not sent to client.
> Read requests are sent to all cluster members instead of member of a DC.
> Attached patch adds a new commandType argument to *NaturalEndpoint methods.
> It's needed to separate endpoint list for read and write commands, so for
> read requests endpoint list will contain servers in local DC.
> For write requests endpoints provided in all DCs.
> In DatacenterQuorumResponseHandler.response signal is not sent in some cases.
> (In this case we experienced timed out reading exceptions.)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.