storm
storm copied to clipboard
[STORM-3771] Execute doCleanup in its own timer thread without lock.
What is the purpose of the change
Sometimes doCleanup can take a long time (several minutes) while holding submitLock. This slows down other "submitLock" dependent activities. Execute doCleanup without a lock and within its own timer thread. Ignore exception that may occur inside doCleanup() method.
How was the change tested
Add concurrency tests to StormTimer and HdfsBlobStoreImpl. Make a temporary code change to insert a four minute delay in topoIdsToClean() after "cleanable.addAll(Utils.OR(store.storedTopoIds(), EMPTY_STRING_SET));". Verify that doCleanup() works and logs a warning that cleanup is taking too long.