You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2017/10/29 16:08:01 UTC

[jira] [Closed] (POOL-280) Code cleanups for GenericObjectPool.borrowObject(...)

     [ https://issues.apache.org/jira/browse/POOL-280?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Gregory closed POOL-280.
-----------------------------

Closing issues for release 2.4.3. Let's create a new issue if we need to adjust [POOL-320]

> Code cleanups for GenericObjectPool.borrowObject(...)
> -----------------------------------------------------
>
>                 Key: POOL-280
>                 URL: https://issues.apache.org/jira/browse/POOL-280
>             Project: Commons Pool
>          Issue Type: Improvement
>    Affects Versions: 2.2
>            Reporter: Jacopo Cappellato
>            Priority: Minor
>             Fix For: 2.4.3
>
>         Attachments: POOL-280.patch
>
>
> In the attached patch you will find 2 minor code cleanups (no functional changes) in order to slightly simplify the code:
> # removed an if block that was unnecessary from DefaultPooledObject.deallocate()
> # removed some duplicate code from the two blocks of an if-else statement in GenericObjectPool.borrowObject(...); the original code was:
> {code}
>         while (p == null) {
>             create = false;
>             if (blockWhenExhausted) {
>                 p = idleObjects.pollFirst();
>                 if (p == null) {
>                     p = create();
>                     if (p != null) {
>                         create = true;
>                     }
>                 }
>                 if (p == null) {
>                     if (borrowMaxWaitMillis < 0) {
>                         p = idleObjects.takeFirst();
>                     } else {
>                         p = idleObjects.pollFirst(borrowMaxWaitMillis,
>                                 TimeUnit.MILLISECONDS);
>                     }
>                 }
>                 if (p == null) {
>                     throw new NoSuchElementException(
>                             "Timeout waiting for idle object");
>                 }
>                 if (!p.allocate()) {
>                     p = null;
>                 }
>             } else {
>                 p = idleObjects.pollFirst();
>                 if (p == null) {
>                     p = create();
>                     if (p != null) {
>                         create = true;
>                     }
>                 }
>                 if (p == null) {
>                     throw new NoSuchElementException("Pool exhausted");
>                 }
>                 if (!p.allocate()) {
>                     p = null;
>                 }
>             }
>             ...
>         }
> {code}
> and the new code is:
> {code}
>         while (p == null) {
>             create = false;
>             p = idleObjects.pollFirst();
>             if (p == null) {
>                 p = create();
>                 if (p != null) {
>                     create = true;
>                 }
>             }
>             if (p == null) {
>                 if (blockWhenExhausted) {
>                     if (borrowMaxWaitMillis < 0) {
>                         p = idleObjects.takeFirst();
>                     } else {
>                         p = idleObjects.pollFirst(borrowMaxWaitMillis,
>                                 TimeUnit.MILLISECONDS);
>                     }
>                     if (p == null) {
>                         throw new NoSuchElementException(
>                                 "Timeout waiting for idle object");
>                     }
>                 } else {
>                     throw new NoSuchElementException("Pool exhausted");
>                 }
>             }
>             if (!p.allocate()) {
>                 p = null;
>             }
>             ...
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)