commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jacopo Cappellato (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (POOL-280) Code cleanups for DefaultPooledObject.deallocate() and GenericObjectPool.borrowObject(...)
Date Sun, 05 Oct 2014 06:31:33 GMT

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

Mime
View raw message