Tom Dyas created CURATOR-223:
--------------------------------

             Summary: PathChildrenCache (wastefully) creates a thread per 
monitored node.
                 Key: CURATOR-223
                 URL: https://issues.apache.org/jira/browse/CURATOR-223
             Project: Apache Curator
          Issue Type: Improvement
          Components: Recipes
    Affects Versions: 2.7.1
            Reporter: Tom Dyas


PathChildrenCache creates a single-threaded executor. In the aggregate, this 
means there is a thread for every monitored node.

In my company's use case, we use ServiceCache (which uses PathChildrenCache) to 
monitor service discovery nodes for the locations of many sharded immutable 
key/value stores used by our services. We saw in excess of 250 threads devoted 
to the PathChildrenCache's used by ServiceCache. These threads were all parked 
so there was negligible CPU impact, but there is still the memory/stack impact 
of having so many idle threads. We would like to avoid that impact.

I'd like to modify PathChildrenCache to take an ExecutorService as an alternate 
to the ThreadFactory it currently takes. This would allow me to pass in a 
thread pool for my company's use case.

Are there any issues with which I should be concerned concerning 
PathChildrenCache's use of separate threads? (Non-reentrancy from 
watcher-invoked code? Binary compatibility?)




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to