Ektorp: NPE with httpclient 4.4

Caused by: java.lang.NullPointerException
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.ensureLoaded(ByteSourceJsonBootstrapper.java:489)
    at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.detectEncoding(ByteSourceJsonBootstrapper.java:126)
    at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.constructParser(ByteSourceJsonBootstrapper.java:215)
    at com.fasterxml.jackson.core.JsonFactory._createParser(JsonFactory.java:1191)
    at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:753)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2207)
    at org.ektorp.impl.StdCouchDbConnector$5.success(StdCouchDbConnector.java:250)
    at org.ektorp.http.RestTemplate.handleResponse(RestTemplate.java:122)
    at org.ektorp.http.RestTemplate.get(RestTemplate.java:22)
    at org.ektorp.impl.StdCouchDbConnector.get(StdCouchDbConnector.java:246)
    at org.ektorp.impl.StdCouchDbConnector.get(StdCouchDbConnector.java:237)
    at org.ektorp.support.StdDesignDocumentFactory.getFromDatabase(StdDesignDocumentFactory.java:57)
    at org.ektorp.support.CouchDbRepositorySupport.initDesignDocInternal(CouchDbRepositorySupport.java:280)
    at org.ektorp.support.CouchDbRepositorySupport.initStandardDesignDocument(CouchDbRepositorySupport.java:274)

This exception is thrown after upgrading httpclient from 4.3.6 to 4.4 (using Java8u31 and ektorp 1.4.2).

I reverted for now but wanted to inform you about this problem.

About this issue

  • Original URL
  • State: open
  • Created 9 years ago
  • Comments: 25 (10 by maintainers)

Commits related to this issue

Most upvoted comments

I ran into this when I upgraded Spring Boot 1.5 -> 2.0. It caused an upgrade of Jackson, which in turn forced me to upgrade to Ektorp 1.5, after which my “all”-views for designs stopped working with similar stack traces as @huxi above.

Solved it by disabling StdHttpClient.caching using Java configuration of Spring Boot, something like:

@Bean
public CouchDbConnector getCouchDb() throws Exception {
        StdHttpClient.Builder httpClientBuilder = new StdHttpClient.Builder();
        httpClientBuilder.url(getDatabaseUrl()).caching(false);  // <-- Here
        // (..)
        CouchDbConnector dbConnector = new StdCouchDbConnector(getDatabaseName(),
                new StdCouchDbInstance(httpClientBuilder.build()), omf);
        dbConnector.createDatabaseIfNotExists();
        return dbConnector;
}

Thanks @maratynsky !