Skip to content
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

[BUG] Parsing histogram interval failed #130

Closed
Degreeno opened this issue Jan 2, 2023 · 1 comment · Fixed by #131
Closed

[BUG] Parsing histogram interval failed #130

Degreeno opened this issue Jan 2, 2023 · 1 comment · Fixed by #131
Assignees
Labels
bug Something isn't working

Comments

@Degreeno
Copy link

Degreeno commented Jan 2, 2023

What is the bug?

Creating a search with a histogram and interval will fail parsing with the error:
OpenSearch.Net.Utf8Json.JsonParsingException: expected:'Number Token', actual:'.', at offset:432

How can one reproduce the bug?

Just define an aggregation with an histogram and an interval.

var searchResponse = await _openSearchClient.SearchAsync<MetricInstance>(c => c
      .Index(GetIndexByDateTimeAndTenantUuidWithWildcards(IndexPattern, "*", tenantUuid))
      .Size(0)
      .Query(query => query
          .Bool(b => b
              .Must(must => must
                      .Terms(p =>
                          p.Field(field => field.DefinitionUuid)
                              .Terms(definition.Uuid)
                      )
              )
          )
      )
      .Aggregations(agg => agg
          .Histogram("aggregation_ranges", r => r
              .Field(f => f.Timestamp)
              .Interval(5000)
          )
      )
  );

What is the expected behavior?

It should not result in a parsing error.

Error Log

# FailureReason: Unrecoverable/Unexpected BadResponse while attempting POST on https://localhost:9200/metric-instance-%2A-fcd362ac-f70f-458f-b43e-12440a82435c/_search?pretty=true&error_trace=true&typed_keys=true
 - [1] BadResponse: Node: https://localhost:9200/ Exception: JsonParsingException Took: 00:00:01.9584614
# Audit exception in step 1 BadResponse:
OpenSearch.Net.Utf8Json.JsonParsingException: expected:'Number Token', actual:'.', at offset:432
   at OpenSearch.Net.Utf8Json.JsonReader.ReadInt64()
   at OpenSearch.Client.AggregateFormatter.GetDateHistogramBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.ReadBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment`1& propertyName, IReadOnlyDictionary`2 meta)
   at OpenSearch.Client.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateDictionaryFormatter.ParseAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String name, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String[] tokens, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
   at OpenSearch.Net.Utf8Json.Resolvers.DynamicMethodAnonymousFormatter`1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.DeserializeAsync[T](Stream stream, IJsonFormatterResolver resolver)
   at OpenSearch.Net.ResponseBuilder.SetBodyAsync[TResponse](ApiCallDetails details, RequestData requestData, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.ResponseBuilder.ToResponseAsync[TResponse](RequestData requestData, Exception ex, Nullable`1 statusCode, IEnumerable`1 warnings, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.RequestPipeline.CallOpenSearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.Transport`1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
# Inner Exception: expected:'Number Token', actual:'.', at offset:432
OpenSearch.Net.Utf8Json.JsonParsingException: expected:'Number Token', actual:'.', at offset:432
   at OpenSearch.Net.Utf8Json.JsonReader.ReadInt64()
   at OpenSearch.Client.AggregateFormatter.GetDateHistogramBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.ReadBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment`1& propertyName, IReadOnlyDictionary`2 meta)
   at OpenSearch.Client.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateDictionaryFormatter.ParseAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String name, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String[] tokens, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
   at OpenSearch.Net.Utf8Json.Resolvers.DynamicMethodAnonymousFormatter`1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.DeserializeAsync[T](Stream stream, IJsonFormatterResolver resolver)
   at OpenSearch.Net.ResponseBuilder.SetBodyAsync[TResponse](ApiCallDetails details, RequestData requestData, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.ResponseBuilder.ToResponseAsync[TResponse](RequestData requestData, Exception ex, Nullable`1 statusCode, IEnumerable`1 warnings, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.RequestPipeline.CallOpenSearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.Transport`1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
# Exception:
OpenSearch.Net.UnexpectedOpenSearchClientException: expected:'Number Token', actual:'.', at offset:432
 ---> OpenSearch.Net.Utf8Json.JsonParsingException: expected:'Number Token', actual:'.', at offset:432
   at OpenSearch.Net.Utf8Json.JsonReader.ReadInt64()
   at OpenSearch.Client.AggregateFormatter.GetDateHistogramBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.ReadBucket(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.GetMultiBucketAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, ArraySegment`1& propertyName, IReadOnlyDictionary`2 meta)
   at OpenSearch.Client.AggregateFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Client.AggregateDictionaryFormatter.ParseAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String name, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.ReadAggregate(JsonReader& reader, IJsonFormatterResolver formatterResolver, String[] tokens, Dictionary`2 dictionary)
   at OpenSearch.Client.AggregateDictionaryFormatter.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
   at OpenSearch.Net.Utf8Json.Resolvers.DynamicMethodAnonymousFormatter`1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
   at OpenSearch.Net.Utf8Json.JsonSerializer.DeserializeAsync[T](Stream stream, IJsonFormatterResolver resolver)
   at OpenSearch.Net.ResponseBuilder.SetBodyAsync[TResponse](ApiCallDetails details, RequestData requestData, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.ResponseBuilder.ToResponseAsync[TResponse](RequestData requestData, Exception ex, Nullable`1 statusCode, IEnumerable`1 warnings, Stream responseStream, String mimeType, CancellationToken cancellationToken)
   at OpenSearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.RequestPipeline.CallOpenSearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
   at OpenSearch.Net.Transport`1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
   --- End of inner exception stack trace ---
   at OpenSearch.Net.Transport`1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
   at OpenSearch.Client.OpenSearchClient.SearchAsync[TDocument](ISearchRequest request, CancellationToken ct)
   at OpenSearch.Client.OpenSearchClient.SearchAsync[TDocument](Func`2 selector, CancellationToken ct)
   at Metric.Clients.OpenSearch.OpenSearchMetricClient.GetAggregatedMetricInstances(Guid tenantUuid, Guid deviceUuid, MetricDefinition definition, DateTimeOffset from, DateTimeOffset to, ICollection`1 numericAggregations) in C:\GIT\Rider\metric-service\src\Clients\OpenSearch\OpenSearchMetricClient.cs:line 240
@Degreeno Degreeno added the bug Something isn't working label Jan 2, 2023
@Xtansia Xtansia self-assigned this Jan 5, 2023
@Xtansia
Copy link
Collaborator

Xtansia commented Mar 16, 2023

The fix for this bug was included in release v1.3.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants