[ https://issues.apache.org/jira/browse/HADOOP-7717?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13119859#comment-13119859
]
Todd Lipcon commented on HADOOP-7717:
-------------------------------------
I think there's a race here around the use of the atomic integer. If one thread increments
the integer and is about to call performFailover, then gets switched out, another thread can
run, decide another failover has occurred, and then get the old proxy object (ie not failover).
Instead I think you should use a regular int, then synchronize around both the check, the
failover, and the resulting failoverCount++
> Move handling of concurrent client fail-overs to RetryInvocationHandler
> -----------------------------------------------------------------------
>
> Key: HADOOP-7717
> URL: https://issues.apache.org/jira/browse/HADOOP-7717
> Project: Hadoop Common
> Issue Type: Improvement
> Components: ipc
> Affects Versions: 0.24.0
> Reporter: Aaron T. Myers
> Assignee: Aaron T. Myers
> Fix For: 0.24.0
>
> Attachments: HADOOP-7717.patch
>
>
> Currently every implementation of a {{FailoverProxyProvider}} will need to perform its
own synchronization to ensure that multiple concurrent failed calls to a single client proxy
object don't result in multiple client fail over events. It would be better to put this logic
in {{RetryInvocationHandler.invoke}}.
> This is based on feedback provided by Todd in [this comment|https://issues.apache.org/jira/browse/HDFS-1973?focusedCommentId=13119567&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13119567].
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira