From cfb954a643b1f3bd3867d647da4f9f421305aeb8 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Mon, 15 Mar 2021 23:05:45 +1000 Subject: [PATCH] Handle "NaN" in sampling fields (#5404) Fixes #5007 --- src/Nest/Aggregations/AggregateFormatter.cs | 6 ++++-- .../Metric/ExtendedStats/ExtendedStatsAggregate.cs | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Nest/Aggregations/AggregateFormatter.cs b/src/Nest/Aggregations/AggregateFormatter.cs index c6f0b894fc6..e926b46e469 100644 --- a/src/Nest/Aggregations/AggregateFormatter.cs +++ b/src/Nest/Aggregations/AggregateFormatter.cs @@ -639,6 +639,8 @@ private IAggregate GetExtendedStatsAggregate(ref JsonReader reader, IJsonFormatt extendedStatsMetric.SumOfSquares = reader.ReadNullableDouble(); reader.ReadNext(); // , + var formatter = new NullableStringDoubleFormatter(); + while (reader.GetCurrentJsonToken() != JsonToken.EndObject) { var propertyName = reader.ReadPropertyNameSegmentRaw(); @@ -660,13 +662,13 @@ private IAggregate GetExtendedStatsAggregate(ref JsonReader reader, IJsonFormatt extendedStatsMetric.VariancePopulation = reader.ReadNullableDouble(); break; case 4: - extendedStatsMetric.VarianceSampling = reader.ReadNullableDouble(); + extendedStatsMetric.VarianceSampling = formatter.Deserialize(ref reader, formatterResolver); break; case 5: extendedStatsMetric.StdDeviationPopulation = reader.ReadNullableDouble(); break; case 6: - extendedStatsMetric.StdDeviationSampling = reader.ReadNullableDouble(); + extendedStatsMetric.StdDeviationSampling = formatter.Deserialize(ref reader, formatterResolver); break; } } diff --git a/src/Nest/Aggregations/Metric/ExtendedStats/ExtendedStatsAggregate.cs b/src/Nest/Aggregations/Metric/ExtendedStats/ExtendedStatsAggregate.cs index fd0d096e3e5..22208e0a761 100644 --- a/src/Nest/Aggregations/Metric/ExtendedStats/ExtendedStatsAggregate.cs +++ b/src/Nest/Aggregations/Metric/ExtendedStats/ExtendedStatsAggregate.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information using System.Runtime.Serialization; +using Nest.Utf8Json; namespace Nest { @@ -73,9 +74,11 @@ public class StandardDeviationBounds public double? UpperPopulation { get; set; } [DataMember(Name = "lower_sampling")] + [JsonFormatter(typeof(NullableStringDoubleFormatter))] public double? LowerSampling { get; set; } [DataMember(Name = "upper_sampling")] + [JsonFormatter(typeof(NullableStringDoubleFormatter))] public double? UpperSampling { get; set; } } }