Skip to content

Commit b64c61b

Browse files
committed
fix #930 shard failures meta data are not exposed
1 parent ce5196f commit b64c61b

File tree

4 files changed

+172
-1
lines changed

4 files changed

+172
-1
lines changed

Diff for: src/Nest/Domain/Hit/ShardsMetaData.cs

+23-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using Newtonsoft.Json;
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using Newtonsoft.Json;
24

35
namespace Nest
46
{
@@ -13,5 +15,25 @@ public class ShardsMetaData
1315

1416
[JsonProperty]
1517
public int Failed { get; internal set; }
18+
19+
[JsonProperty("failures")]
20+
public IEnumerable<ShardsFailureReason> Failures { get; internal set; }
1621
}
22+
23+
[JsonObject]
24+
public class ShardsFailureReason
25+
{
26+
[JsonProperty("index")]
27+
public string Index { get; internal set; }
28+
29+
[JsonProperty("shard")]
30+
public int Shard { get; internal set; }
31+
32+
[JsonProperty("status")]
33+
public int Status { get; internal set; }
34+
35+
[JsonProperty("reason")]
36+
public string Reason { get; internal set; }
37+
38+
}
1739
}

Diff for: src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj

+4
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@
378378
<Compile Include="Reproduce\Reproduce806Tests.cs" />
379379
<Compile Include="Reproduce\Reproduce876Tests.cs" />
380380
<Compile Include="Reproduce\Reproduce926Tests.cs" />
381+
<Compile Include="Search\Failures\ShardFailureTests.cs" />
381382
<Compile Include="Search\Fields\FieldsTests.cs" />
382383
<Compile Include="Search\Filter\Modes\ConditionlessFilterJson.cs" />
383384
<Compile Include="Search\Filter\Modes\FilterModesTests.cs" />
@@ -780,6 +781,9 @@
780781
<None Include="Reproduce\Issue876.json">
781782
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
782783
</None>
784+
<None Include="Search\Failures\ShardFailuresResult.json">
785+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
786+
</None>
783787
<None Include="Search\Fields\FixedCovariantSearchResult.json">
784788
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
785789
</None>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Reflection;
5+
using FluentAssertions;
6+
using Nest.Tests.MockData.Domain;
7+
using NUnit.Framework;
8+
9+
namespace Nest.Tests.Unit.Search.Failures
10+
{
11+
[TestFixture]
12+
public class ShardFailureTests : BaseJsonTests
13+
{
14+
[Test]
15+
public void ShardFailuresAreExposed()
16+
{
17+
var client = GetFixedReturnClient(MethodBase.GetCurrentMethod(), "ShardFailuresResult");
18+
19+
var result = client.Search<ElasticsearchProject>(s=>s.MatchAll());
20+
result.IsValid.Should().BeTrue();
21+
22+
result.Shards.Should().NotBeNull();
23+
result.Shards.Failures.Should().NotBeEmpty();
24+
var shardFailure = result.Shards.Failures.First();
25+
shardFailure.Index.Should().Be("<indexname>");
26+
shardFailure.Reason.Should().Be("<error message>");
27+
shardFailure.Status.Should().Be(500);
28+
shardFailure.Shard.Should().Be(4);
29+
}
30+
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
{
2+
"took": 4,
3+
"timed_out": false,
4+
"_shards": {
5+
"total": 5,
6+
"successful": 5,
7+
"failed": 1,
8+
"failures": [
9+
{
10+
"index": "<indexname>",
11+
"shard": 4,
12+
"status": 500,
13+
"reason": "<error message>"
14+
}
15+
]
16+
},
17+
"hits": {
18+
"total": 1605,
19+
"max_score": 1.0,
20+
"hits": [
21+
{
22+
"_index": "default-index",
23+
"_type": "classa",
24+
"_id": "nl-a457f343-ae3e-43e0-865c-af4cd73f1ede",
25+
"_score": 1.0,
26+
"fields": {
27+
"lang": [ "nl" ]
28+
}
29+
},
30+
{
31+
"_index": "default-index",
32+
"_type": "classb",
33+
"_id": "nl-ef598e58-53d6-4b04-9653-c1b5386ee13a",
34+
"_score": 1.0,
35+
"fields": {
36+
"lang": [ "nl" ]
37+
}
38+
},
39+
{
40+
"_index": "default-index",
41+
"_type": "classa",
42+
"_id": "nl-101594bb-4dea-45be-9788-04a1ade0c3db",
43+
"_score": 1.0,
44+
"fields": {
45+
"lang": [ "nl" ]
46+
}
47+
},
48+
{
49+
"_index": "default-index",
50+
"_type": "classd",
51+
"_id": "en-09058c83-59c4-48a8-a370-138dbdfdf524",
52+
"_score": 1.0,
53+
"fields": {
54+
"lang": [ "en" ]
55+
}
56+
},
57+
{
58+
"_index": "default-index",
59+
"_type": "classc",
60+
"_id": "en-414aa648-c1a3-41d8-9db6-3df3724a8e98",
61+
"_score": 1.0,
62+
"fields": {
63+
"lang": [ "en" ]
64+
}
65+
},
66+
{
67+
"_index": "default-index",
68+
"_type": "classc",
69+
"_id": "nl-030b56ef-d751-450f-870c-575c4d558e1e",
70+
"_score": 1.0,
71+
"fields": {
72+
"lang": [ "nl" ]
73+
}
74+
},
75+
{
76+
"_index": "default-index",
77+
"_type": "classc",
78+
"_id": "nl-c423c8e2-6cf3-4a45-806a-c65a81d704d5",
79+
"_score": 1.0,
80+
"fields": {
81+
"lang": [ "nl" ]
82+
}
83+
},
84+
{
85+
"_index": "default-index",
86+
"_type": "classa",
87+
"_id": "en-b11f98fc-231d-463b-aa3d-a8948f2f1d7b",
88+
"_score": 1.0,
89+
"fields": {
90+
"lang": [ "en" ]
91+
}
92+
},
93+
{
94+
"_index": "default-index",
95+
"_type": "classb",
96+
"_id": "nl-4d2722ce-00be-41f8-82f1-8c447294587b",
97+
"_score": 1.0,
98+
"fields": {
99+
"lang": [ "nl" ]
100+
}
101+
},
102+
{
103+
"_index": "default-index",
104+
"_type": "classb",
105+
"_id": "nl-c485ed76-4c50-49af-8630-0c6413b296d6",
106+
"_score": 1.0,
107+
"fields": {
108+
"lang": [ "nl" ]
109+
}
110+
}
111+
]
112+
}
113+
}

0 commit comments

Comments
 (0)