You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2019/04/01 17:02:00 UTC

[jira] [Commented] (GEODE-6515) Refactor connection pool to remove lock contention

    [ https://issues.apache.org/jira/browse/GEODE-6515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806985#comment-16806985 ] 

ASF subversion and git services commented on GEODE-6515:
--------------------------------------------------------

Commit e87e720b331f164723c36ec82cd8d01c559b1ae3 in geode's branch refs/heads/develop from Helena Bales
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=e87e720 ]

GEODE-6515: refactor ConnectionManagerImpl (#3304)

Refactors the ConnectionManagerImpl to a non-locking implementation to allow gets to scale with more threads. The previous implementation locked around all logic for getting, creating, or returning a connection to the pool, which resulted in a high degree of contention for that lock.

Additionally, much of the logic for accounting for the number of total connections, and the dequeue of available connections have been extracted to ConnectionAccounting and AvailableConnectionManager respectively. This was done in order to add unit and concurrent tests for that logic.

* Refactor ConnectionManagerImpl to a non-locking implementation
* add unit tests for ConnectionManagerImpl
* update ConnectionManagerImpl Javadocs
* extract ConnectionAccounting from ConnectionManagerImpl
* add unit test for ConnectionAccounting
* add concurrency tests for ConnectionAccounting
* extract AvailableConnectionManager from ConnectionManagerImpl
* add unit tests for AvailableConnectionManager
* add concurrency tests for AvailableConnectionManager
* add unit test for ConcurrentTestRunner
* add javadocs to AvailableConnectionManager and improved the method names
* activate returns false if the connection has been destroyed instead of throwing ConnectionDestroyedException
* start background prefill if under the minimum number of connections in ConnectionManagerImpl#borrowConnection when create fails
* add generic <ServerLocation> to Set in ConnectionManagerImpl
* Correct invalidateServer logic in ConnectionManagerImpl
* make NOT_WAITING private in ConnectionManagerImpl
* made createLifetimeReplacementConnection private since it is only
used by ConnectionMap

Signed-off-by: Helena Bales <hb...@pivotal.io>
Signed-off-by: Jacob Barrett <jb...@pivotal.io>
Signed-off-by: Darrel Schneider <ds...@pivotal.io>


> Refactor connection pool to remove lock contention
> --------------------------------------------------
>
>                 Key: GEODE-6515
>                 URL: https://issues.apache.org/jira/browse/GEODE-6515
>             Project: Geode
>          Issue Type: Improvement
>          Components: client/server
>            Reporter: Helena Bales
>            Assignee: Helena Bales
>            Priority: Major
>              Labels: benchmark
>          Time Spent: 3.5h
>  Remaining Estimate: 0h
>
> Solution should achieve near or even better throughput and latency as using thread local connections.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)