Skip to content

Error deserializing co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplain #999

@voron86

Description

@voron86

Java API client version

8.18.0

Java version

21

Elasticsearch Version

8.17.x

Problem description

I'm trying to use ElasticsearchAsyncClient to get lifecycle explain for indexes in error state:

client.ilm().explainLifecycle {
            it.onlyErrors(true)
            it.index("_all")
        }

I'm getting the next response:

{"indices":{
  ".ds-projects_3806357961572783500_streams_ilm_error_data_stream-5d9f2b7a-4ae0-4cd1-ac8c-5e3a316eb446-2025.04.16-000001":{
    "index":".ds-projects_3806357961572783500_streams_ilm_error_data_stream-5d9f2b7a-4ae0-4cd1-ac8c-5e3a316eb446-2025.04.16-000001",
    "managed":true,
    "policy":"projects_3806357961572783500_ilm_ilm_error_data_stream-5d9f2b7a-4ae0-4cd1-ac8c-5e3a316eb446",
    "index_creation_date_millis":1744807656519,
    "time_since_index_creation":"3.75s",
    "step":"ERROR",
    "step_info":{"type":"illegal_argument_exception","reason":"policy [projects_3806357961572783500_ilm_ilm_error_data_stream-5d9f2b7a-4ae0-4cd1-ac8c-5e3a316eb446] does not exist"}
  }
}}

Which cannot be parsed by the client because of phase property in LifecycleExplainManaged DTO:

node: http://localhost:55995/, status: 200, [es/ilm.explain_lifecycle] Failed to decode response
co.elastic.clients.transport.TransportException: 
	at co.elastic.clients.transport.ElasticsearchTransportBase.decodeTransportResponse(ElasticsearchTransportBase.java:417)
	at co.elastic.clients.transport.ElasticsearchTransportBase.getApiResponse(ElasticsearchTransportBase.java:375)
	at co.elastic.clients.transport.ElasticsearchTransportBase.lambda$performRequestAsync$0(ElasticsearchTransportBase.java:205)
	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at co.elastic.clients.transport.rest_client.RestClientHttpClient$1.onSuccess(RestClientHttpClient.java:116)
	at org.elasticsearch.client.RestClient$FailureTrackingResponseListener.onSuccess(RestClient.java:680)
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:403)
	at org.elasticsearch.client.RestClient$1.completed(RestClient.java:397)
	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122)
	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:182)
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:448)
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:338)
	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265)
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:87)
	at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:40)
	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: co.elastic.clients.json.JsonpMappingException: Error deserializing co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplain: co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'LifecycleExplainManaged.phase' (JSON path: indices['.ds-projects_4155627483991394216_streams_ilm_error_data_stream-7adbea85-36be-435d-b030-2689b5f8fbd9-2025.04.16-000001']) (line no=1, column no=651, offset=-1)
	at co.elastic.clients.json.JsonpMappingException.from0(JsonpMappingException.java:134)
	at co.elastic.clients.json.JsonpMappingException.from(JsonpMappingException.java:121)
	at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:236)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
	at co.elastic.clients.json.BuildFunctionDeserializer.deserialize(BuildFunctionDeserializer.java:47)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
	at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:349)
	at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:333)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
	at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:214)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
	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.ElasticsearchTransportBase.decodeTransportResponse(ElasticsearchTransportBase.java:412)
	... 25 more
Caused by: co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'LifecycleExplainManaged.phase'
	at co.elastic.clients.util.ApiTypeHelper.checkNotNull(ApiTypeHelper.java:81)
	at co.elastic.clients.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:75)
	at co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplainManaged.<init>(LifecycleExplainManaged.java:160)
	at co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplainManaged.<init>(LifecycleExplainManaged.java:69)
	at co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplainManaged$Builder.build(LifecycleExplainManaged.java:900)
	at co.elastic.clients.elasticsearch.ilm.explain_lifecycle.LifecycleExplainManaged$Builder.build(LifecycleExplainManaged.java:553)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:80)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
	at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:231)
	... 41 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area: SpecificationRelated to the API spec used to generate client codeCategory: BugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions