You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jacopo Cappellato (JIRA)" <ji...@apache.org> on 2014/10/05 08:31:33 UTC

[jira] [Updated] (POOL-280) Code cleanups for DefaultPooledObject.deallocate() and GenericObjectPool.borrowObject(...)

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

Jacopo Cappellato updated POOL-280:
-----------------------------------
    Attachment: POOL-280.patch

> Code cleanups for DefaultPooledObject.deallocate() and 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
>         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.3.4#6332)