From issues-return-70425-archive-asf-public=cust-asf.ponee.io@commons.apache.org Sat Oct 27 00:15:03 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 514E6180647 for ; Sat, 27 Oct 2018 00:15:03 +0200 (CEST) Received: (qmail 78576 invoked by uid 500); 26 Oct 2018 22:15:02 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 78565 invoked by uid 99); 26 Oct 2018 22:15:02 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Oct 2018 22:15:02 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id DB3FDC1228 for ; Fri, 26 Oct 2018 22:15:01 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -110.301 X-Spam-Level: X-Spam-Status: No, score=-110.301 tagged_above=-999 required=6.31 tests=[ENV_AND_HDR_SPF_MATCH=-0.5, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, USER_IN_DEF_SPF_WL=-7.5, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id azdWN3rgqm0t for ; Fri, 26 Oct 2018 22:15:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 18AE75F52A for ; Fri, 26 Oct 2018 22:15:01 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id A796DE0F4C for ; Fri, 26 Oct 2018 22:15:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 1431E2183F for ; Fri, 26 Oct 2018 22:15:00 +0000 (UTC) Date: Fri, 26 Oct 2018 22:15:00 +0000 (UTC) From: "Mark Struberg (JIRA)" To: issues@commons.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (POOL-340) borrowObject is stuck, if create fails MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/POOL-340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16665714#comment-16665714 ] Mark Struberg commented on POOL-340: ------------------------------------ I'm not quite sure I follow the unit test. In SingleObjectFactory#validatePbject() you only return true once. Every subsequent validation is false. And of course when returning the object to the pool will then say nay. Even if it is perfectly fine! If we created the PooledObject then it is valid imo. Bc the test doesn't allow to create 2 instances anyway. Returning true in validateObject lets the test pass with the latest codebase. > borrowObject is stuck, if create fails > -------------------------------------- > > Key: POOL-340 > URL: https://issues.apache.org/jira/browse/POOL-340 > Project: Commons Pool > Issue Type: Bug > Affects Versions: 2.4, 2.4.1, 2.4.2, 2.4.3, 2.5.0 > Reporter: Pavel Kolesov > Priority: Critical > > After changes in 2.4.3 there is a high chance of a scenario, in which borrowObject waits infinitely, if create fails or no one calls a create. > {noformat} > java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <0x0000000083cfd978> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) > at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) > at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) > at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442) > at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) > {noformat} > If pool is exhausted, when borrowObject tries to get idle object, it waits for new object to be created. > If all objects are returned to pool invalid and destroyed, and it is impossible to create a new one, borrowObject will not return. > Even if afterwards it is becomes possible to crate a new object but no one creates it, borrowObject will not return either. -- This message was sent by Atlassian JIRA (v7.6.3#76005)