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] [Created] (POOL-280) Code cleanups for DefaultPooledObject.deallocate() and GenericObjectPool.borrowObject(...)
Date Sun, 05 Oct 2014 06:29:33 GMT
Jacopo Cappellato created POOL-280:
--------------------------------------

             Summary: 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


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