Skip to content

Commit a7ef216

Browse files
committed
Fixed failing unit test in release mode (serializers should be able to handle null streams even if it only happens in RELEASE unit tests).
Also improved MaxRetryExceptionMessage to include inner stack traces (so pinpointing the exact cause is much much easier).
1 parent 4080a58 commit a7ef216

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

Diff for: src/Elasticsearch.Net/Connection/Transport.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class Transport : ITransport
2323
const int BUFFER_SIZE = 4096;
2424

2525
protected static readonly string MaxRetryExceptionMessage = "Failed after retrying {2} times: '{0} {1}'. {3}";
26-
protected static readonly string MaxRetryInnerMessage = "InnerException: {0}, InnerMessage: {1}";
26+
protected static readonly string MaxRetryInnerMessage = "InnerException: {0}, InnerMessage: {1}, InnerStackTrace: {2}";
2727
protected internal readonly IConnectionConfigurationValues ConfigurationValues;
2828
protected internal readonly IConnection Connection;
2929
private readonly IElasticsearchSerializer _serializer;
@@ -488,12 +488,12 @@ private static string CreateMaxRetryExceptionMessage<T>(TransportRequestState<T>
488488

489489
aggregate = aggregate.Flatten();
490490
var innerExceptions = aggregate.InnerExceptions
491-
.Select(ae => MaxRetryInnerMessage.F(ae.GetType().Name, ae.Message))
491+
.Select(ae => MaxRetryInnerMessage.F(ae.GetType().Name, ae.Message, ae.StackTrace))
492492
.ToList();
493493
innerException = string.Join("\r\n", innerExceptions);
494494
}
495495
else
496-
innerException = MaxRetryInnerMessage.F(e.GetType().Name, e.Message);
496+
innerException = MaxRetryInnerMessage.F(e.GetType().Name, e.Message, e.StackTrace);
497497
}
498498
var exceptionMessage = MaxRetryExceptionMessage
499499
.F(requestState.Method, requestState.Path, requestState.Retried, innerException);

Diff for: src/Elasticsearch.Net/Properties/AssemblyInfo.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
// <auto-generated/>
2-
3-
using System;
42
using System.Reflection;
53

64
[assembly: AssemblyTitleAttribute("Elasticsearch.Net")]
@@ -10,8 +8,7 @@
108
[assembly: AssemblyConfigurationAttribute("Release")]
119
[assembly: AssemblyVersionAttribute("1.0.0")]
1210
[assembly: AssemblyFileVersionAttribute("1.0.0")]
13-
[assembly: AssemblyInformationalVersionAttribute("1.0.0-beta1")]
14-
[assembly: CLSCompliant(true)]
11+
[assembly: AssemblyInformationalVersionAttribute("1.0.0-ci20140710110619")]
1512
namespace System {
1613
internal static class AssemblyVersionInformation {
1714
internal const string Version = "1.0.0";

Diff for: src/Elasticsearch.Net/Serialization/ElasticsearchDefaultSerializer.cs

+9-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ public T Deserialize<T>(byte[] bytes) where T : class
1515
}
1616
public T Deserialize<T>(Stream stream)
1717
{
18-
var ms = stream as MemoryStream;
19-
//if (ms != null)
20-
// return SimpleJson.DeserializeObject<T>(ms.GetBuffer().Utf8String());
18+
if (stream == null)
19+
return default(T);
2120

22-
using (ms = new MemoryStream())
21+
using (var ms = new MemoryStream())
2322
{
2423
stream.CopyTo(ms);
2524
byte[] buffer = ms.ToArray();
@@ -31,6 +30,12 @@ public T Deserialize<T>(Stream stream)
3130
public Task<T> DeserializeAsync<T>(Stream stream)
3231
{
3332
var tcs = new TaskCompletionSource<T>();
33+
if (stream == null)
34+
{
35+
tcs.SetResult(default(T));
36+
return tcs.Task;
37+
}
38+
3439
using (var ms = new MemoryStream())
3540
{
3641
// return a task that reads the stream asynchronously

Diff for: src/Nest/ExposedInternals/NestSerializer.cs

+9
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public string Stringify(object valueType)
8282
/// <param name="deserializationState">Optional deserialization state</param>
8383
public virtual T Deserialize<T>(Stream stream)
8484
{
85+
if (stream == null) return default(T);
86+
8587
var settings = this._serializationSettings;
8688

8789
return _Deserialize<T>(stream, settings);
@@ -92,6 +94,7 @@ public virtual T Deserialize<T>(Stream stream)
9294
/// </summary>
9395
public T DeserializeInternal<T>(Stream stream, JsonConverter converter)
9496
{
97+
if (stream == null) return default(T);
9598
if (converter == null) return this.Deserialize<T>(stream);
9699

97100
var serializer = JsonSerializer.Create(this.CreateSettings(converter));
@@ -103,6 +106,7 @@ public T DeserializeInternal<T>(Stream stream, JsonConverter converter)
103106

104107
protected internal T _Deserialize<T>(Stream stream, JsonSerializerSettings settings = null)
105108
{
109+
if (stream == null) return default(T);
106110
settings = settings ?? _serializationSettings;
107111
var serializer = JsonSerializer.Create(settings);
108112
var jsonTextReader = new JsonTextReader(new StreamReader(stream));
@@ -121,6 +125,11 @@ public virtual Task<T> DeserializeAsync<T>(Stream stream)
121125
//figure out wheter reading the stream async on our own might be beneficial
122126
//over memory possible memory usage
123127
var tcs = new TaskCompletionSource<T>();
128+
if (stream == null)
129+
{
130+
tcs.SetResult(default(T));
131+
return tcs.Task;
132+
}
124133
var r = this.Deserialize<T>(stream);
125134
tcs.SetResult(r);
126135
return tcs.Task;

0 commit comments

Comments
 (0)