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] [Comment Edited] (HTTPCORE-437) NullPointerException in HeaderGroup.getHeaders
Date Wed, 26 Oct 2016 10:40:58 GMT

    [ https://issues.apache.org/jira/browse/HTTPCORE-437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15608082#comment-15608082
] 

Adam Michalik edited comment on HTTPCORE-437 at 10/26/16 10:40 AM:
-------------------------------------------------------------------

# That might be an issue in the [Sardine|https://github.com/lookfirst/sardine] WebDAV library
that I'm actually using and that in turn uses HttpClient. I see that for each request done
with the HttpClient, the same instance of {{HttpClientContext}} is passed. But the context
class is marked as {{@NotThreadSafe}} and the instance is mutated during the execution of
the request. I raised an issue on the Sardine project: https://github.com/lookfirst/sardine/issues/263
# The system itself is running on Spring and the HttpClient instance is a Spring bean, but
I don't see a way for it to influence the low-level processing inside HttpClient
# I added the environment info to the issue - Oracle JDK 8u101 on Ubuntu 14.04


was (Author: hattifnat):
# That might be an issue in the [Sardine|https://github.com/lookfirst/sardine] WebDAV library
that I'm actually using and that in turn uses HttpClient. I see that for each request done
with the HttpClient, the same instance of {{HttpClientContext}} is passed. But the context
class is marked as {{@NotThreadSafe}} and the instance is mutated during the execution of
the request. I will raise an issue on the Sardine project and reference it here.
# The system itself is running on Spring and the HttpClient instance is a Spring bean, but
I don't see a way for it to influence the low-level processing inside HttpClient
# I added the environment info to the issue - Oracle JDK 8u101 on Ubuntu 14.04

> 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
>         Environment: Oracle JDK 8u101 on Ubuntu 14.04
>            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