[ https://issues.apache.org/jira/browse/STORM-737?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14541193#comment-14541193 ]
ASF GitHub Bot commented on STORM-737: -------------------------------------- Github user HeartSaVioR commented on a diff in the pull request: https://github.com/apache/storm/pull/521#discussion_r30197889 --- Diff: storm-core/src/clj/backtype/storm/daemon/worker.clj --- @@ -139,12 +139,12 @@ (.add local pair) ;;Using java objects directly to avoid performance issues in java code - (let [node+port (get @task->node+port task)] - (when (not (.get remoteMap node+port)) - (.put remoteMap node+port (ArrayList.))) - (let [remote (.get remoteMap node+port)] + (let [] + (when (not (.get remoteMap task)) + (.put remoteMap task (ArrayList.))) + (let [remote (.get remoteMap task)] (.add remote (TaskMessage. task (.serialize serializer tuple))) - )))) + )))) --- End diff -- @d2r Yes, TransferDrainer doesn't have to do it. Btw, it makes me think that we may don't need to play with TransferDrainer since its main role is grouping tuples by node+port. Could you confirm that I'm right? > 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)