diff --git a/src/Elasticsearch.Net/Diagnostics/Diagnostic.cs b/src/Elasticsearch.Net/Diagnostics/Diagnostic.cs index b725309efb6..b8e4472e20b 100644 --- a/src/Elasticsearch.Net/Diagnostics/Diagnostic.cs +++ b/src/Elasticsearch.Net/Diagnostics/Diagnostic.cs @@ -18,13 +18,14 @@ public Diagnostic(string operationName, DiagnosticSource source, TState state) EndState = state; } - internal class Diagnostic : Activity, IDisposable + internal class Diagnostic : Activity { - public static Diagnostic Default { get; } = new Diagnostic(); + public static Diagnostic Default { get; } = new(); private readonly DiagnosticSource _source; private TStateEnd _endState; private readonly bool _default; + private bool _disposed; private Diagnostic() : base("__NOOP__") => _default = true; @@ -44,9 +45,20 @@ internal set _endState = value; } } + + protected override void Dispose(bool disposing) + { + if (_disposed) return; + if (disposing) + { + //_source can be null if Default instance + _source?.StopActivity(SetEndTime(DateTime.UtcNow), EndState); + } - //_source can be null if Default instance - public void Dispose() => _source?.StopActivity(SetEndTime(DateTime.UtcNow), EndState); + _disposed = true; + + base.Dispose(disposing); + } } -} \ No newline at end of file +} diff --git a/src/Elasticsearch.Net/Elasticsearch.Net.csproj b/src/Elasticsearch.Net/Elasticsearch.Net.csproj index a2f2e780ec6..694e3c51c9c 100644 --- a/src/Elasticsearch.Net/Elasticsearch.Net.csproj +++ b/src/Elasticsearch.Net/Elasticsearch.Net.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/tests/Tests.ScratchPad/Tests.ScratchPad.csproj b/tests/Tests.ScratchPad/Tests.ScratchPad.csproj index 242a3ce4191..8976e8719eb 100644 --- a/tests/Tests.ScratchPad/Tests.ScratchPad.csproj +++ b/tests/Tests.ScratchPad/Tests.ScratchPad.csproj @@ -5,9 +5,13 @@ true true + - - + + + + +