Skip to content

[es/indices.recovery] Missing required property 'ShardRecovery.stopTimeInMillis' #202

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
synox opened this issue Mar 16, 2022 · 0 comments · Fixed by #344
Closed

[es/indices.recovery] Missing required property 'ShardRecovery.stopTimeInMillis' #202

synox opened this issue Mar 16, 2022 · 0 comments · Fixed by #344
Labels
Area: Specification Related to the API spec used to generate client code

Comments

@synox
Copy link

synox commented Mar 16, 2022

Java API client version

7.16.2

Java version

java 11.0.14 2022-01-18 LTS

Elasticsearch Version

7.16.2

Problem description

code:

            RecoveryResponse response = client
                    .indices()
                    .recovery(r -> r
                            .index(indexNames));
            response.result().values();

Error:

Caused by: co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'ShardRecovery.stopTimeInMillis'
	at co.elastic.clients.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:76)
	at co.elastic.clients.elasticsearch.indices.recovery.ShardRecovery.<init>(ShardRecovery.java:102)
	at co.elastic.clients.elasticsearch.indices.recovery.ShardRecovery.<init>(ShardRecovery.java:52)
	at co.elastic.clients.elasticsearch.indices.recovery.ShardRecovery$Builder.build(ShardRecovery.java:523)
	at co.elastic.clients.elasticsearch.indices.recovery.ShardRecovery$Builder.build(ShardRecovery.java:307)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:86)
	at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:48)
	at co.elastic.clients.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:320)
	at co.elastic.clients.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:285)
	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.endpoints.DictionaryResponse.lambda$setupDictionaryResponseDeserializer$0(DictionaryResponse.java:148)
	at co.elastic.clients.json.ObjectDeserializer.parseUnknownField(ObjectDeserializer.java:205)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:174)
	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.indices.ElasticsearchIndicesClient.recovery(ElasticsearchIndicesClient.java:1619)
	at co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient.recovery(ElasticsearchIndicesClient.java:1635)

Notes

Spec shows ShardRecovery.stop_time_in_millis to be mandatory. (https://github.com/elastic/elasticsearch-specification/blob/main/specification/indices/recovery/types.ts#L120)

And that is how it is implemented:

this.stopTimeInMillis = ApiTypeHelper.requireNonNull(builder.stopTimeInMillis, this, "stopTimeInMillis");

However ES server v7.16.2 does not include the field. It might be because the restore was in progress.

cc: @fabriziofortino

@synox synox changed the title [es/indices.recovery] ShardRecovery.stopTimeInMillis [es/indices.recovery] Missing required property 'ShardRecovery.stopTimeInMillis' Mar 16, 2022
@swallez swallez added the Area: Specification Related to the API spec used to generate client code label Jun 27, 2022
swallez added a commit to elastic/elasticsearch-specification that referenced this issue Jun 28, 2022
* Fix MultiTermsRequest - elastic/elasticsearch-java#160
* TypeFieldMappings is a multi-key dictionary - elastic/elasticsearch-java#166
* Fix TranslateSqlResponse - elastic/elasticsearch-java#167
* Token filter properties are generally optional - elastic/elasticsearch-java#199
* Fix typo in IndexSettings.mapping and allow extended settings - elastic/elasticsearch-java#295
* ShardRecovery.stop_time_in_millis is optional - elastic/elasticsearch-java#202
swallez added a commit to elastic/elasticsearch-specification that referenced this issue Jun 28, 2022
* Fix MultiTermsRequest - elastic/elasticsearch-java#160
* TypeFieldMappings is a multi-key dictionary - elastic/elasticsearch-java#166
* Fix TranslateSqlResponse - elastic/elasticsearch-java#167
* Token filter properties are generally optional - elastic/elasticsearch-java#199
* Fix typo in IndexSettings.mapping and allow extended settings - elastic/elasticsearch-java#295
* ShardRecovery.stop_time_in_millis is optional - elastic/elasticsearch-java#202
swallez added a commit to elastic/elasticsearch-specification that referenced this issue Jun 28, 2022
* Fix MultiTermsRequest - elastic/elasticsearch-java#160
* TypeFieldMappings is a multi-key dictionary - elastic/elasticsearch-java#166
* Fix TranslateSqlResponse - elastic/elasticsearch-java#167
* Token filter properties are generally optional - elastic/elasticsearch-java#199
* Fix typo in IndexSettings.mapping and allow extended settings - elastic/elasticsearch-java#295
* ShardRecovery.stop_time_in_millis is optional - elastic/elasticsearch-java#202
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Specification Related to the API spec used to generate client code
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants