[
https://issues.apache.org/jira/browse/STORM-737?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14548377#comment-14548377
]
ASF GitHub Bot commented on STORM-737:
--------------------------------------
Github user d2r commented on the pull request:
https://github.com/apache/storm/pull/521#issuecomment-103145088
@HeartSaVioR,
I see you are right. There are two race conditions here:
1. If we do not check assignments in the read-lock, then we could use an
invalid connection. There could be an exception if we lose this race.
2. If we group by destination node+port when we equeue tuples for sending,
we lose the information needed to update the destination node+port when we
dequeue for sending, since assignments `task->node+port` can change in the
meantime. If we lose this race, then tuples for which there is a new
assignment may be dropped unnecessarily (if we fix 1.) or sent to the wrong
worker.
(Formerly, I did not realize 2. was also a regression with 861a92e, so I
was looking for a smaller change in this PR.)
> If you think latter is better to move on, I'll post a new PR based on
6ef2f11.
OK, I will take a look at your other branch.
> IMO it is a critical path for transfer efficiency, so it would be better
to have more reviewer for this patch.
I agree. The more, the better.
> Workers may try to send to closed connections
> ---------------------------------------------
>
> Key: STORM-737
> URL: https://issues.apache.org/jira/browse/STORM-737
> Project: Apache Storm
> Issue Type: Bug
> Affects Versions: 0.9.2-incubating
> Reporter: Derek Dagit
>
> There is a race condition in the worker code that can allow for a send() to
> be called on a closed connection.
> [Discussion|https://github.com/apache/storm/pull/349#issuecomment-87778672]
> The assignment mapping from task -> node+port needs to be read and used in
> the read lock when sending, so that an accurate mapping is used that does not
> include any connections that are closed.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)