commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (POOL-347) borrowObject waits for maxWaitMillis over in pool full
Date Fri, 20 Jul 2018 16:51:00 GMT

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

ASF GitHub Bot commented on POOL-347:
-------------------------------------

GitHub user sunsuk7tp opened a pull request:

    https://github.com/apache/commons-pool/pull/10

    POOL-347 : Regard waiting object creation as failure if pool is full and maxWaitTime passed

    JIRA: https://issues.apache.org/jira/browse/POOL-347

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/sunsuk7tp/commons-pool POOL-347

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/commons-pool/pull/10.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #10
    
----
commit 7b3a83479ea3d57c624aa1ecd0260b86b12272de
Author: Shunsuke Nakamura <sunsuk7tp@...>
Date:   2018-07-20T16:47:28Z

    [POOL-347] Regard waiting object creation as failure if pool is full and maxWaitTime passed

----


> borrowObject waits for maxWaitMillis over in pool full
> ------------------------------------------------------
>
>                 Key: POOL-347
>                 URL: https://issues.apache.org/jira/browse/POOL-347
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.4.3, 2.5.0, 2.6.0
>            Reporter: Shunsuke Nakamura
>            Priority: Critical
>
> Since POOL-303's [fix|https://github.com/apache/commons-pool/commit/a4c544a24242701673073d32d2ddbf037fac0099],
even if we specify maxWaitMillis, object creation continues waiting for longer time without
any hard limit at [this line|https://git.linecorp.com/LINE-Server/apache-commons-pool2/commit/a4c544a24242701673073d32d2ddbf037fac0099#diff-39748305ad0db35f23449745d04c89fbR1046].

> Here's the actual stacktrace:
> {code}
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0x0000000741158358> (a java.lang.Object)
> 	at java.lang.Object.wait(Object.java:502)
> 	at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:848)
> 	- locked <0x0000000741158358> (a java.lang.Object)
> 	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:417)
> 	at org.apache.commons.pool2.impl.TestGenericObjectPool.testReturnBorrowObjectWithingMaxWaitMillis(TestGenericObjectPool.java:2658)
> {code}
> As example of this issue, we use Jedis2.9 with commons-pool 2.4.3 and maxWaitMillis=500ms
in our environment.
> However, when master node is down and Pool is full, successor connections for dead master
wait at the line until pool is free. Therefore, aborting old connections takes 40 ~ 80 sec.
> In order to avoid such situations, we should set hard limit to wait by reusing maxWaitMillis
or another value.  



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

Mime
View raw message