From 17bc6aec623fa635187dc2e3d4764d0617a6d1cf Mon Sep 17 00:00:00 2001 From: Greg Marzouka Date: Tue, 28 Mar 2017 10:52:29 -0400 Subject: [PATCH] Fix #2690: NRE in IndexSettingsConverter when merge policy isn't set --- .../Settings/IndexSettingsConverter.cs | 14 ++++++------- src/Tests/Reproduce/GithubIssue2690.cs | 21 +++++++++++++++++++ src/Tests/Tests.csproj | 1 + 3 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 src/Tests/Reproduce/GithubIssue2690.cs diff --git a/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs b/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs index 95fe0a27d58..1cc96746492 100644 --- a/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs +++ b/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs @@ -41,13 +41,13 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s d[UpdatableIndexSettings.TranslogFlushThresholdSize] = flush?.ThresholdSize; d[UpdatableIndexSettings.TranslogFlushThresholdPeriod] = flush?.ThresholdPeriod; - d[UpdatableIndexSettings.MergePolicyExpungeDeletesAllowed] = ds.Merge?.Policy.ExpungeDeletesAllowed; - d[UpdatableIndexSettings.MergePolicyFloorSegment] = ds.Merge?.Policy.FloorSegment; - d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnce] = ds.Merge?.Policy.MaxMergeAtOnce; - d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnceExplicit] = ds.Merge?.Policy.MaxMergeAtOnceExplicit; - d[UpdatableIndexSettings.MergePolicyMaxMergedSegment] = ds.Merge?.Policy.MaxMergedSegment; - d[UpdatableIndexSettings.MergePolicySegmentsPerTier] = ds.Merge?.Policy.SegmentsPerTier; - d[UpdatableIndexSettings.MergePolicyReclaimDeletesWeight] = ds.Merge?.Policy.ReclaimDeletesWeight; + d[UpdatableIndexSettings.MergePolicyExpungeDeletesAllowed] = ds.Merge?.Policy?.ExpungeDeletesAllowed; + d[UpdatableIndexSettings.MergePolicyFloorSegment] = ds.Merge?.Policy?.FloorSegment; + d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnce] = ds.Merge?.Policy?.MaxMergeAtOnce; + d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnceExplicit] = ds.Merge?.Policy?.MaxMergeAtOnceExplicit; + d[UpdatableIndexSettings.MergePolicyMaxMergedSegment] = ds.Merge?.Policy?.MaxMergedSegment; + d[UpdatableIndexSettings.MergePolicySegmentsPerTier] = ds.Merge?.Policy?.SegmentsPerTier; + d[UpdatableIndexSettings.MergePolicyReclaimDeletesWeight] = ds.Merge?.Policy?.ReclaimDeletesWeight; d[UpdatableIndexSettings.MergeSchedulerMaxThreadCount] = ds.Merge?.Scheduler?.MaxThreadCount; d[UpdatableIndexSettings.MergeSchedulerAutoThrottle] = ds.Merge?.Scheduler?.AutoThrottle; diff --git a/src/Tests/Reproduce/GithubIssue2690.cs b/src/Tests/Reproduce/GithubIssue2690.cs new file mode 100644 index 00000000000..13832e37004 --- /dev/null +++ b/src/Tests/Reproduce/GithubIssue2690.cs @@ -0,0 +1,21 @@ +using FluentAssertions; +using Tests.Framework; + +namespace Tests.Reproduce +{ + public class GithubIssue2690 + { + [U] public void EmptyPolicyCausesNullReferenceException() + { + var client = TestClient.GetInMemoryClient(); + var response = client.CreateIndex("foo", c => c + .Settings(s => s + .Merge(m => m + .Scheduler(sch => sch.MaxThreadCount(1)) + ) + ) + ); + response.IsValid.Should().BeTrue(); + } + } +} diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj index 0dec1d2b732..f05f2fdb677 100644 --- a/src/Tests/Tests.csproj +++ b/src/Tests/Tests.csproj @@ -715,6 +715,7 @@ +