[
https://issues.apache.org/jira/browse/STORM-593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14386910#comment-14386910
]
ASF GitHub Bot commented on STORM-593:
--------------------------------------
Github user d2r commented on a diff in the pull request:
https://github.com/apache/storm/pull/349#discussion_r27404112
--- Diff: storm-core/src/clj/backtype/storm/daemon/worker.clj ---
@@ -335,16 +333,14 @@
drainer (TransferDrainer.)
node+port->socket (:cached-node+port->socket worker)
task->node+port (:cached-task->node+port worker)
- endpoint-socket-lock (:endpoint-socket-lock worker)
]
(disruptor/clojure-handler
(fn [packets _ batch-end?]
(.add drainer packets)
(when batch-end?
- (read-locked endpoint-socket-lock
- (let [node+port->socket @node+port->socket]
- (.send drainer node+port->socket)))
+ (let [node+port->socket @node+port->socket]
+ (.send drainer node+port->socket))
--- End diff --
@nathanmarz, I could be missing something, but I do not think we need a
read lock here to protect against the send:
There is no corresponding write-lock around `:cached-node+port->socket`.
(I do not think we need one anyway, since it is updated via a `swap!` in
`mk-refresh-connections`, and that should be atomic.)
> No need of rwlock for clojure atom
> -----------------------------------
>
> Key: STORM-593
> URL: https://issues.apache.org/jira/browse/STORM-593
> Project: Apache Storm
> Issue Type: Improvement
> Affects Versions: 0.10.0
> Reporter: xiajun
> Assignee: xiajun
>
> cached-node+port->socket in worker-data is atom, there on need for rwlock
> endpoint-socket-lock to protect cached-node+port->socket. And after use
> rwlock, there will be competition between refresh-connections and message
> send.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)