hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Michalik (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HTTPCORE-437) NullPointerException in HeaderGroup.getHeaders
Date Wed, 26 Oct 2016 08:20:58 GMT
Adam Michalik created HTTPCORE-437:
--------------------------------------

             Summary: NullPointerException in HeaderGroup.getHeaders
                 Key: HTTPCORE-437
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-437
             Project: HttpComponents HttpCore
          Issue Type: Bug
          Components: HttpCore
    Affects Versions: 4.4.5
            Reporter: Adam Michalik


I'm using HttpClient in multithreaded environment with PoolingHttpClientConnectionManager.
Once in a while I get an exception whose root cause is

{code}
    Caused by: java.lang.NullPointerException: null
        at org.apache.http.message.HeaderGroup.getHeaders(HeaderGroup.java:182)
        at org.apache.http.message.AbstractHttpMessage.getHeaders(AbstractHttpMessage.java:73)
        at org.apache.http.impl.client.DefaultClientConnectionReuseStrategy.keepAlive(DefaultClientConnectionReuseStrategy.java:51)
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:274)
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:220)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
{code}

The {{getHeaders}} method is 

{code:java}
    public Header[] getHeaders(final String name) {
        List<Header> headersFound = null;
        for (int i = 0; i < this.headers.size(); i++) {
            final Header header = this.headers.get(i);
            if (header.getName().equalsIgnoreCase(name)) { // NPE HERE
                if (headersFound == null) {
                    headersFound = new ArrayList<Header>();
                }
                headersFound.add(header);
            }
        }
        return headersFound != null ? headersFound.toArray(new Header[headersFound.size()])
: EMPTY;
    }
{code}

I looked around in the {{HeaderGroup}} class and I see that every modification to the {{headers}}
list has a null-check. Also, the {{BasicHeader}} and {{BufferedHeader}} have null-checks so
that {{name}} cannot be null. How can this be occurring?

The issue happens on production, around 10 exceptions in the last 12 hours out of 1 000 000
requests done in total.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message