Github user arunmahadevan commented on the issue:
Managing threadpools within a bolt isn't fundamentally wrong, we have see
some use cases where this is done. However, we have been putting efforts to
reduce the overall number of threads created internally within storm since the
thread context switches were causing performance bottlenecks. I assume the
threadpool threads are mostly IO/network bound so it should not cause too much
Do you need multiple threads since the enrichments involve external DB look
ups and are time consuming ? Maybe you could compare the performance of
maintaining a thread pool v/s increasing the bolt's parallelism to achieve a
Another option might be to prefetch the enrichment data and load it into
each bolt so that you might not need separate threads to do the enrichment.
If you are able to manage without threads, that would be preferable. Even
otherwise its not that bad as long as you don't create too many threads and
they are cleaned up properly. (we have had some cases were the internal threads
were causing workers to hang).