Elasticsearch-net: ExtendedStats and Percentiles are broken on NEST 7.0.0-alpha1

Created on 3 May 2019  路  7Comments  路  Source: elastic/elasticsearch-net

NEST version: 7.0.0-alpha1

Elasticsearch version: 7.0.1

Simple calls to ExtendedStats or Percentiles generates exceptions:

"message": "An error has occurred.",
    "exceptionMessage": "expected:',', actual:'\"extended_stats#name\"', at offset:402",
    "exceptionType": "Elasticsearch.Net.UnexpectedElasticsearchClientException",
    "stackTrace": "   at Elasticsearch.Net.Transport`1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters)\r\n   at Elasticsearch.Net.ElasticLowLevelClient.DoRequest[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters)\r\n   at Nest.ElasticClient.DoRequest[TRequest,TResponse](TRequest p, IRequestParameters parameters, Action`1 forceConfiguration)\r\n   at Nest.ElasticClient.Search[T,TResult](ISearchRequest request)\r\n   at Nest.ElasticClient.Search[T](ISearchRequest request)\r\n   at Nest.ElasticClient.Search[T,TResult](Func`2 selector)\r\n   at Nest.ElasticClient.Search[T](Func`2 selector)\r\n   at ......
PR Pending bug v7.0.0-alpha2

All 7 comments

Thanks for reporting @meriturva. Do you have a sample response to work with, that threw the exception?

Running the integration tests, I think this may already be fixed in 7.x. Would you be able to try with the latest 7.x package from our CI feed: https://ci.appveyor.com/nuget/elasticsearch-net? It'll be the latest 7.1.0* package there

Running against version: 7.1.0-ci20190507T015600 doesn't fix issue.
Here inner exception stack trace:

```

FailureReason: Unrecoverable/Unexpected BadResponse while attempting POST on http://xxxxx/index_name/_search?typed_keys=true

  • [1] BadResponse: Node: http://xxxx:9200/ Exception: JsonParsingException Took: 00:00:00.1725812

    Audit exception in step 1 BadResponse:

Elasticsearch.Net.JsonParsingException: expected:',', actual:'"extended_stats#queueTimeStats"', at offset:402
at Elasticsearch.Net.JsonReader.ReadIsValueSeparatorWithVerify()
at Elasticsearch.Net.JsonReader.ReadIsInArray(Int32& count)
at Nest.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment1& propertyName) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSubAggregates(JsonReader& reader, String name, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSingleBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver ) at Elasticsearch.Net.DynamicMethodAnonymousFormatter1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Nest.InternalSerializer.DeserializeT
at Elasticsearch.Net.ResponseBuilder.SetBodyTResponse
at Elasticsearch.Net.ResponseBuilder.ToResponseTResponse
at Elasticsearch.Net.HttpConnection.RequestTResponse
at Elasticsearch.Net.RequestPipeline.CallElasticsearchTResponse
at Elasticsearch.Net.Transport`1.RequestTResponse

Inner Exception: expected:',', actual:'"extended_stats#queueTimeStats"', at offset:402

Elasticsearch.Net.JsonParsingException: expected:',', actual:'"extended_stats#queueTimeStats"', at offset:402
at Elasticsearch.Net.JsonReader.ReadIsValueSeparatorWithVerify()
at Elasticsearch.Net.JsonReader.ReadIsInArray(Int32& count)
at Nest.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment1& propertyName) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSubAggregates(JsonReader& reader, String name, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSingleBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver ) at Elasticsearch.Net.DynamicMethodAnonymousFormatter1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Nest.InternalSerializer.DeserializeT
at Elasticsearch.Net.ResponseBuilder.SetBodyTResponse
at Elasticsearch.Net.ResponseBuilder.ToResponseTResponse
at Elasticsearch.Net.HttpConnection.RequestTResponse
at Elasticsearch.Net.RequestPipeline.CallElasticsearchTResponse
at Elasticsearch.Net.Transport`1.RequestTResponse

Exception:

Elasticsearch.Net.UnexpectedElasticsearchClientException: expected:',', actual:'"extended_stats#queueTimeStats"', at offset:402 ---> Elasticsearch.Net.JsonParsingException: expected:',', actual:'"extended_stats#queueTimeStats"', at offset:402
at Elasticsearch.Net.JsonReader.ReadIsValueSeparatorWithVerify()
at Elasticsearch.Net.JsonReader.ReadIsInArray(Int32& count)
at Nest.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment1& propertyName) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSubAggregates(JsonReader& reader, String name, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.GetSingleBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Nest.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver) at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver ) at Elasticsearch.Net.DynamicMethodAnonymousFormatter1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Elasticsearch.Net.JsonSerializer.DeserializeT
at Nest.InternalSerializer.DeserializeT
at Elasticsearch.Net.ResponseBuilder.SetBodyTResponse
at Elasticsearch.Net.ResponseBuilder.ToResponseTResponse
at Elasticsearch.Net.HttpConnection.RequestTResponse
at Elasticsearch.Net.RequestPipeline.CallElasticsearchTResponse
at Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters) --- End of inner exception stack trace --- at Elasticsearch.Net.Transport1.RequestTResponse
at Elasticsearch.Net.ElasticLowLevelClient.DoRequestTResponse
at Nest.ElasticClient.DoRequestTRequest,TResponse
at Nest.ElasticClient.SearchT
at xxxxx(Int64[] yyyy, Int64[] zzzz, DateTime fromDate, DateTime toDate) in xxxx:line 400

```

is there a chance that you could capture the JSON response and add it here too, with Fiddler or OnRequestCompleted?

Here JSON response filtered but seems to still throw that exception during deserialization phase:

test3715.zip

Thanks for the response @meriturva, it was super helpful in identifying a couple of issues. I've opened https://github.com/elastic/elasticsearch-net/pull/3724 to address

Closing this as #3724 has been merged and will be in the next release

Was this page helpful?
0 / 5 - 0 ratings