Barry Oglesby created GEODE-1246:
------------------------------------

             Summary: GemFireCacheImpl's eventThreadPool only uses one thread 
for asynchronously invoking CacheListener callbacks
                 Key: GEODE-1246
                 URL: https://issues.apache.org/jira/browse/GEODE-1246
             Project: Geode
          Issue Type: Bug
          Components: core, regions
            Reporter: Barry Oglesby


After enabling asynchronous {{CacheListener}} callbacks, the {{CacheListener}} 
callbacks are processed serially by the same {{Message Event Thread}} thread 
even though the {{eventThreadPool}} is configured with 16 threads.

Configure asynchronous {{CacheListener}} callbacks like:
{noformat}
--J=-Dgemfire.Cache.ASYNC_EVENT_LISTENERS=true
{noformat}
The {{eventThreadPool}} is currently created like:
{noformat}
ArrayBlockingQueue q = new ArrayBlockingQueue(EVENT_QUEUE_LIMIT);
this.eventThreadPool = new PooledExecutorWithDMStats(q, 16, 
this.cachePerfStats.getEventPoolHelper(), tf, 1000, new CallerRunsPolicy());
{noformat}
At Darrel's suggestion, I replaced the {{eventThreadPool's ArrayBlockingQueue}} 
with a {{SynchronousQueue}}, and that is working as expected (all 16 threads 
are used):
{noformat}
this.eventThreadPool = new PooledExecutorWithDMStats(new SynchronousQueue(), 
16, this.cachePerfStats.getEventPoolHelper(), tf, 1000, new CallerRunsPolicy());
{noformat}




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

Reply via email to