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)