GitHub user revans2 opened a pull request:
https://github.com/apache/storm/pull/2622
STORM-3020: fix possible race condition in AsyncLocalizer
There were a number of places in AsyncLocalizer that were using
synchronized to try and protect some maps. When we added in support for
restarting a worker if specific blobs change one of the places that was
protected before moved to a background thread and lost that protection.
Now that we are java 8 we can use lambdas to provide the same protection
without the need for the locks so I removed all of the course grained locking
in AsyncLocalizer. Now the only locking is on a per-blob basis.
I tested this manually by launching topologies with lots of different types
of blobs, modified the blobs and verified that everything worked correctly. I
shot things, including the supervisor, various times and verified that it was
able to recover in each case.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/revans2/incubator-storm STORM-3020
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/storm/pull/2622.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2622
----
commit 337aef8f1291aba0ab228f6e9e0800c19b8c5ceb
Author: Robert (Bobby) Evans <evans@...>
Date: 2018-04-03T19:58:14Z
STORM-3020: fix possible race condition in AsyncLocalizer
----
---