Hey all,
When using .withRetryConfiguration()for ElasticsearchIO, I get the following
stacktrace:
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No
content to map due to end-of-input
at [Source: (org.apache.http.nio.entity.ContentInputStream); line: 1, column: 0]
at
com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at
com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4133)
at
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3988)
at
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3058)
at
org.apache.beam.sdk.io.elasticsearch.ElasticsearchIO.parseResponse(ElasticsearchIO.java:167)
at
org.apache.beam.sdk.io.elasticsearch.ElasticsearchIO.checkForErrors(ElasticsearchIO.java:171)
at
org.apache.beam.sdk.io.elasticsearch.ElasticsearchIO$Write$WriteFn.flushBatch(ElasticsearchIO.java:1213)
at
org.apache.beam.sdk.io.elasticsearch.ElasticsearchIO$Write$WriteFn.finishBundle(ElasticsearchIO.java:1183)
I’ve been breaking my head on this one.
Apparently the elastic Response object can’t be parsed anymore in the
checkForErrors() method.
However, it is parsed successfully in the default RetryPredicate’s test method,
which is called in flushBatch() in the if clause related to the retryConfig
(ElasticsearchIO:1201).
As far as I know, the Response object is not altered.
Any clues why this doesn’t work for me?
I really need this feature, as inserting 40M documents into elastic results in
too many retry timeouts ☺.
Thanks!
Wout