[jboss-jira] [JBoss JIRA] (JBJCA-1344) race condition between PoolFiller and CapacityFiller results in wrong pool statistics

Flavia Rainone (JIRA) issues at jboss.org
Mon Apr 3 23:56:00 EDT 2017


    [ https://issues.jboss.org/browse/JBJCA-1344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13388181#comment-13388181 ] 

Flavia Rainone commented on JBJCA-1344:
---------------------------------------

[~simkam] Yes, the analysis is correct, that concurrent behavior is causing the 1 destroyed statistics.
What I need to check with you and [~maeste] is: is this behavior unexpected?
Synchronizing both threads would just result in loss of performance and defeat the purpose of the entire synchronization algorithm in the MCP, so I see that as a no no. The other possibility for fixing the statistics is just not adding to the destroyed statistics count when the connection is destroyed in the given scenario.
But is the statistics supposed to hide that info, given that the statistics will show that there was an extra connection created (at https://github.com/ironjacamar/ironjacamar/blob/1.4/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreConcurrentLinkedDequeManagedConnectionPool.java#L1320 and at https://github.com/ironjacamar/ironjacamar/blob/1.4/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreConcurrentLinkedDequeManagedConnectionPool.java#L1322).
I'm afraid that omitting the destroyed connection from the statistics will just leave it inconsistent. And, if to make it consistent will also mean not incrementing the created connection statistics, it will still be inconsistent with the fact that there was an actual connection created.

> race condition between PoolFiller and CapacityFiller results in wrong pool statistics
> -------------------------------------------------------------------------------------
>
>                 Key: JBJCA-1344
>                 URL: https://issues.jboss.org/browse/JBJCA-1344
>             Project: IronJacamar
>          Issue Type: Bug
>    Affects Versions: 	 WildFly/IronJacamar 1.4.2.Final
>            Reporter: Martin Simka
>            Assignee: Flavia Rainone
>         Attachments: fail.log, pass.log
>
>
> There seems to be race condition between PoolFiller and CapacityFiller which results in wrong pool statistics
> I think what happens is:
>  - Both add connections to pool in different threads
>  - PoolFiller creates connection, then checks pools size and because pool has already certain size, it doesn't add connection and instead it destroys connection which increases destroyedCount
> see [SemaphoreConcurrentLinkedDequeManagedConnectionPool.java#L1163|https://github.com/ironjacamar/ironjacamar/blob/1.4/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreConcurrentLinkedDequeManagedConnectionPool.java#L1163]



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list