[
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)