JsonProviderImpl not found but only for UpdateByQuery responses

I'm getting the following error only when deserialising UpdateByQuery responses:

2023-06-27 18:00:18:193 +0000 [http-nio-8080-exec-4] ERROR Error: Provider org.glassfish.json.JsonProviderImpl not found
jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
    at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:75)
    at co.elastic.clients.json.jackson.JsonValueParser.<init>(JsonValueParser.java:39)
    at co.elastic.clients.json.jackson.JacksonJsonpParser.getValue(JacksonJsonpParser.java:233)
    at co.elastic.clients.json.JsonpDeserializerBase$8.deserialize(JsonpDeserializerBase.java:255)
    at co.elastic.clients.json.JsonpDeserializerBase$8.deserialize(JsonpDeserializerBase.java:249)
    at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
    at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
    at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
    at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
    at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
    at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
    at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
    at co.elastic.clients.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:325)
    at co.elastic.clients.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:291)
    at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:144)
    at co.elastic.clients.elasticsearch.ElasticsearchClient.updateByQuery(ElasticsearchClient.java:1722)
    at co.elastic.clients.elasticsearch.ElasticsearchClient.updateByQuery(ElasticsearchClient.java:1740)

Everything else works and has been working for ages.

I'm using this version of the client: co.elastic.clients:elasticsearch-java:7.16.2 running against elasticsearch in docker with container version: docker.elastic.co/elasticsearch/elasticsearch:7.16.2

What could be the problem here?

In case the solution helps anyone else:

The issue was how I was calling the update by query.

All the code is in a springboot application. The code making the call was in a function in a @Component. The function was being called from a @RestController within a java parallelStream. When I changed it back to a stream it was fine.

Something about running the code in a ForkJoinPool means that, for some reason, no JsonProviderImpl is available in the execution context.

It's still a bit of a mystery to me, tbh. But the "fix" was to move from parallelStream back to stream.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.