curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom Dyas (JIRA)" <>
Subject [jira] [Created] (CURATOR-223) PathChildrenCache (wastefully) creates a thread per monitored node.
Date Mon, 15 Jun 2015 20:47:01 GMT
Tom Dyas created CURATOR-223:

             Summary: PathChildrenCache (wastefully) creates a thread per monitored node.
                 Key: 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

View raw message