You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by Darrel Schneider <ds...@pivotal.io> on 2016/05/19 00:14:50 UTC

Review Request 47568: change async event pool to use all its threads

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/47568/
-----------------------------------------------------------

Review request for geode, Eric Shu, Scott Jewell, Ken Howe, and Sai Boorlagadda.


Bugs: GEODE-1246
    https://issues.apache.org/jira/browse/GEODE-1246


Repository: geode


Description
-------

Changed async event pool to use all its threads.
A new unit test was added that failed with the old pool and passes with the new.


The system property gemfire.Cache.EVENT_THREAD_LIMIT can be used to configure
the number of threads used the async cache listener invocation.
It defaults to 16.

A bunch of changes were made so that the unit test could create a real GemFireCacheImpl with a mocked DistributedSystem.
I enhanced the DistributedSystem created by "Fakes".

The actual fix for the threading issue is limited to GemFireCacheImpl:
  this.eventThreadPool = new PooledExecutorWithDMStats(q, EVENT_THREAD_LIMIT, this.cachePerfStats.getEventPoolHelper(), tf, 1000);
and the changes to PooledExecutorWithDMStats (which are not actually needed but will prevent someone from calling a particular constructor with a queue that is not a SynchronousQueue.


Diffs
-----

  geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/PooledExecutorWithDMStats.java 0a9f9eca2b4c343fb69bd9bbce2ff76de5ea2faf 
  geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockService.java 610944e71a1b97cc11a534412c68a6dc98e909f3 
  geode-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java 96b7bbcf706ef52e02f01a424035e945050d2dee 
  geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b5ff7ee8f56b0ce64f78db072d98104ac654b392 
  geode-core/src/main/java/com/gemstone/gemfire/internal/jndi/JNDIInvoker.java b3aecc4ef7d9b5d06ac528f2a70a469a1b32b328 
  geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java PRE-CREATION 
  geode-core/src/test/java/com/gemstone/gemfire/test/fake/Fakes.java 2a1fd8e343681f5cd41fa42145d2ae2fb73fd2c3 

Diff: https://reviews.apache.org/r/47568/diff/


Testing
-------

precheckin


Thanks,

Darrel Schneider


Re: Review Request 47568: change async event pool to use all its threads

Posted by Sai Boorlagadda <sb...@pivotal.io>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/47568/#review133987
-----------------------------------------------------------


Ship it!




Ship It!

- Sai Boorlagadda


On May 19, 2016, 12:14 a.m., Darrel Schneider wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/47568/
> -----------------------------------------------------------
> 
> (Updated May 19, 2016, 12:14 a.m.)
> 
> 
> Review request for geode, Eric Shu, Scott Jewell, Ken Howe, and Sai Boorlagadda.
> 
> 
> Bugs: GEODE-1246
>     https://issues.apache.org/jira/browse/GEODE-1246
> 
> 
> Repository: geode
> 
> 
> Description
> -------
> 
> Changed async event pool to use all its threads.
> A new unit test was added that failed with the old pool and passes with the new.
> 
> 
> The system property gemfire.Cache.EVENT_THREAD_LIMIT can be used to configure
> the number of threads used the async cache listener invocation.
> It defaults to 16.
> 
> A bunch of changes were made so that the unit test could create a real GemFireCacheImpl with a mocked DistributedSystem.
> I enhanced the DistributedSystem created by "Fakes".
> 
> The actual fix for the threading issue is limited to GemFireCacheImpl:
>   this.eventThreadPool = new PooledExecutorWithDMStats(q, EVENT_THREAD_LIMIT, this.cachePerfStats.getEventPoolHelper(), tf, 1000);
> and the changes to PooledExecutorWithDMStats (which are not actually needed but will prevent someone from calling a particular constructor with a queue that is not a SynchronousQueue.
> 
> 
> Diffs
> -----
> 
>   geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/PooledExecutorWithDMStats.java 0a9f9eca2b4c343fb69bd9bbce2ff76de5ea2faf 
>   geode-core/src/main/java/com/gemstone/gemfire/distributed/internal/locks/DLockService.java 610944e71a1b97cc11a534412c68a6dc98e909f3 
>   geode-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java 96b7bbcf706ef52e02f01a424035e945050d2dee 
>   geode-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java b5ff7ee8f56b0ce64f78db072d98104ac654b392 
>   geode-core/src/main/java/com/gemstone/gemfire/internal/jndi/JNDIInvoker.java b3aecc4ef7d9b5d06ac528f2a70a469a1b32b328 
>   geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GemFireCacheImplTest.java PRE-CREATION 
>   geode-core/src/test/java/com/gemstone/gemfire/test/fake/Fakes.java 2a1fd8e343681f5cd41fa42145d2ae2fb73fd2c3 
> 
> Diff: https://reviews.apache.org/r/47568/diff/
> 
> 
> Testing
> -------
> 
> precheckin
> 
> 
> Thanks,
> 
> Darrel Schneider
> 
>