Skip to content

Commit bfb2c1c

Browse files
committed
Merge branch '1399-exception-stacktrace-in-async' of https://github.com/RFQ-hub/elasticsearch-net into develop
Conflicts: src/Nest/Nest.csproj
2 parents 1065f32 + d257489 commit bfb2c1c

File tree

7 files changed

+207
-145
lines changed

7 files changed

+207
-145
lines changed

src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerAsync.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ private Task<ElasticsearchResponse<T>> HandleStreamResponse<T>(Task<Elasticsearc
204204

205205
//If we are not using any pooling and we see an exception we rethrow
206206
if (!requestState.UsingPooling && t.IsFaulted && t.Exception != null && maxRetries == 0)
207-
throw t.Exception;
207+
t.Exception.RethrowKeepingStackTrace();
208208

209209

210210
var retried = requestState.Retried;
@@ -215,7 +215,7 @@ private Task<ElasticsearchResponse<T>> HandleStreamResponse<T>(Task<Elasticsearc
215215

216216
// If the response never recieved a status code and has a caught exception make sure we throw it
217217
if (streamResponse.HttpStatusCode.GetValueOrDefault(-1) <= 0 && streamResponse.OriginalException != null)
218-
throw streamResponse.OriginalException;
218+
streamResponse.OriginalException.RethrowKeepingStackTrace();
219219

220220
// If the user explicitly wants a stream return the undisposed stream
221221
if (typeof(Stream).IsAssignableFrom(typeof(T)))
Lines changed: 141 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,148 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4-
<PropertyGroup>
5-
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6-
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7-
<ProjectGuid>{E97CCF40-0BA6-43FE-9F2D-58D454134088}</ProjectGuid>
8-
<OutputType>Library</OutputType>
9-
<AppDesignerFolder>Properties</AppDesignerFolder>
10-
<RootNamespace>Elasticsearch.Net</RootNamespace>
11-
<AssemblyName>Elasticsearch.Net</AssemblyName>
12-
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
13-
<FileAlignment>512</FileAlignment>
14-
<TargetFrameworkProfile />
15-
</PropertyGroup>
16-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17-
<DebugSymbols>true</DebugSymbols>
18-
<DebugType>full</DebugType>
19-
<Optimize>false</Optimize>
20-
<OutputPath>bin\Debug\</OutputPath>
21-
<DefineConstants>DEBUG;TRACE</DefineConstants>
22-
<ErrorReport>prompt</ErrorReport>
23-
<WarningLevel>4</WarningLevel>
24-
<UseVSHostingProcess>false</UseVSHostingProcess>
25-
</PropertyGroup>
26-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27-
<DebugType>pdbonly</DebugType>
28-
<Optimize>true</Optimize>
29-
<OutputPath>bin\Release\</OutputPath>
30-
<DefineConstants>TRACE</DefineConstants>
31-
<ErrorReport>prompt</ErrorReport>
32-
<WarningLevel>4</WarningLevel>
33-
<DocumentationFile>bin\Release\Elasticsearch.Net.XML</DocumentationFile>
34-
<NoWarn>1591,1572,1571,1573,1587,1570</NoWarn>
35-
</PropertyGroup>
36-
<PropertyGroup>
37-
<SignAssembly>true</SignAssembly>
38-
</PropertyGroup>
39-
<PropertyGroup>
40-
<AssemblyOriginatorKeyFile>..\..\build\keys\keypair.snk</AssemblyOriginatorKeyFile>
41-
</PropertyGroup>
42-
<ItemGroup>
43-
<Reference Include="System" />
44-
<Reference Include="System.Core" />
45-
<Reference Include="System.Runtime.Serialization" />
46-
<Reference Include="System.Xml.Linq" />
47-
<Reference Include="System.Data.DataSetExtensions" />
48-
<Reference Include="Microsoft.CSharp" />
49-
<Reference Include="System.Data" />
50-
<Reference Include="System.Xml" />
51-
</ItemGroup>
52-
<ItemGroup>
53-
<Compile Include="Connection\Configuration\IRequestConfiguration.cs" />
54-
<Compile Include="Connection\Configuration\RequestConfiguration.cs" />
55-
<Compile Include="Connection\Configuration\RequestConfigurationDescriptor.cs" />
56-
<Compile Include="Connection\ITransportDelegator.cs" />
57-
<Compile Include="Connection\RequestHandlers\RequestHandler.cs" />
58-
<Compile Include="Connection\RequestHandlers\RequestHandlerAsync.cs" />
59-
<Compile Include="Connection\RequestHandlers\RequestHandlerBase.cs" />
60-
<Compile Include="Connection\RequestState\IRequestTimings.cs" />
61-
<Compile Include="Connection\RequestState\ITransportRequestState.cs" />
62-
<Compile Include="Connection\RequestState\NoopRequestTimings.cs" />
63-
<Compile Include="Connection\RequestState\RequestTimings.cs" />
64-
<Compile Include="Connection\Security\BasicAuthorizationCredentials.cs" />
65-
<Compile Include="Domain\RequestParameters\BaseRequestParameters.cs" />
66-
<Compile Include="Domain\Response\CallMetrics.cs" />
67-
<Compile Include="Domain\Response\IElasticsearchResponse.cs" />
68-
<Compile Include="Domain\IHideObjectMembers.cs" />
69-
<Compile Include="Domain\RequestParameters\IRequestParameters.cs" />
70-
<Compile Include="Domain\Response\RequestMetrics.cs" />
71-
<Compile Include="Domain\Response\RequestType.cs" />
72-
<Compile Include="Domain\Response\VoidResponse.cs" />
73-
<Compile Include="Domain\Response\ElasticsearchServerError.cs" />
74-
<Compile Include="Exceptions\OneToOneServerException.cs" />
75-
<Compile Include="Exceptions\ElasticsearchAuthException.cs" />
76-
<Compile Include="IElasticsearchClient.cs" />
77-
<Compile Include="Obsolete\RequestParameters\FlushRequestParametersObsoleteExtensions.cs" />
78-
<Compile Include="Obsolete\IndicesDeleteAlias.cs" />
79-
<Compile Include="Obsolete\IndicesPutAlias.cs" />
80-
<Compile Include="Obsolete\IndicesRecoveryStatus.cs" />
81-
<Compile Include="Obsolete\IndicesTemplateExists.cs" />
82-
<Compile Include="Obsolete\IndicesGetFieldMapping.cs" />
83-
<Compile Include="Obsolete\Mpercolate.cs" />
84-
<Compile Include="Obsolete\IndicesExistsType.cs" />
85-
<Compile Include="Obsolete\Obsolete.cs" />
86-
<Compile Include="Obsolete\IndicesExistsAlias.cs" />
87-
<Compile Include="Providers\DateTimeProvider.cs" />
88-
<Compile Include="Connection\HttpConnection.cs" />
89-
<Compile Include="Exceptions\ElasticsearchServerException.cs" />
90-
<Compile Include="Exceptions\ConnectionException.cs" />
91-
<Compile Include="Connection\Configuration\ConnectionConfiguration.cs" />
92-
<Compile Include="ConnectionPool\EndpointState.cs" />
93-
<Compile Include="ConnectionPool\IConnectionPool.cs" />
94-
<Compile Include="Providers\IDateTimeProvider.cs" />
95-
<Compile Include="ConnectionPool\SingleNodeConnectionPool.cs" />
96-
<Compile Include="Providers\IMemoryStreamProvider.cs" />
97-
<Compile Include="Providers\MemoryStreamProvider.cs" />
98-
<Compile Include="Providers\Sniffer.cs" />
99-
<Compile Include="ConnectionPool\SniffingConnectionPool.cs" />
100-
<Compile Include="ConnectionPool\StaticConnectionPool.cs" />
101-
<Compile Include="Connection\Transport.cs" />
102-
<Compile Include="Connection\ITransport.cs" />
103-
<Compile Include="Domain\Response\ElasticsearchResponse.cs" />
104-
<Compile Include="Connection\RequestState\TransportRequestState.cs" />
105-
<Compile Include="Connection\IConnection.cs" />
106-
<Compile Include="Connection\Configuration\IConnectionConfigurationValues.cs" />
107-
<Compile Include="Connection\Configuration\IConnectionConfiguration.cs" />
108-
<Compile Include="Connection\InMemoryConnection.cs" />
109-
<Compile Include="ElasticsearchClient.Generated.cs" />
110-
<Compile Include="Domain\Response\DynamicDictionary.cs" />
111-
<Compile Include="Domain\Response\ElasticsearchDynamicValue.cs" />
112-
<Compile Include="Exceptions\MaxRetryException.cs" />
113-
<Compile Include="Extensions\DateExtensions.cs" />
114-
<Compile Include="Extensions\Extensions.cs" />
115-
<Compile Include="Extensions\NameValueCollectionExtensions.cs" />
116-
<Compile Include="Extensions\StringExtensions.cs" />
117-
<Compile Include="Extensions\TypeExtensions.cs" />
118-
<Compile Include="ElasticsearchClient.cs" />
119-
<Compile Include="IElasticsearchClient.Generated.cs" />
120-
<Compile Include="Properties\AssemblyInfo.cs" />
121-
<Compile Include="Domain\Enums.Generated.cs" />
122-
<Compile Include="Domain\RequestParameters\FluentRequestParameters.cs" />
123-
<Compile Include="Domain\RequestParameters\RequestParameters.Generated.cs" />
124-
<Compile Include="Properties\ClsCompliancy.cs" />
125-
<Compile Include="Purify\IPurify.cs" />
126-
<Compile Include="Purify\PurifierDotNet.cs" />
127-
<Compile Include="Purify\PurifierMono.cs" />
128-
<Compile Include="Purify\Purify.cs" />
129-
<Compile Include="Purify\UriInfo.cs" />
130-
<Compile Include="Serialization\ElasticsearchDefaultSerializer.cs" />
131-
<Compile Include="Serialization\IElasticsearchSerializer.cs" />
132-
<Compile Include="Serialization\SerializationFormatting.cs" />
133-
<Compile Include="Serialization\SimpleJson.cs" />
134-
</ItemGroup>
135-
<ItemGroup>
136-
<None Include="paket.references" />
137-
</ItemGroup>
138-
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProjectGuid>{E97CCF40-0BA6-43FE-9F2D-58D454134088}</ProjectGuid>
8+
<OutputType>Library</OutputType>
9+
<AppDesignerFolder>Properties</AppDesignerFolder>
10+
<RootNamespace>Elasticsearch.Net</RootNamespace>
11+
<AssemblyName>Elasticsearch.Net</AssemblyName>
12+
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
<TargetFrameworkProfile />
15+
</PropertyGroup>
16+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17+
<DebugSymbols>true</DebugSymbols>
18+
<DebugType>full</DebugType>
19+
<Optimize>false</Optimize>
20+
<OutputPath>bin\Debug\</OutputPath>
21+
<DefineConstants>DEBUG;TRACE</DefineConstants>
22+
<ErrorReport>prompt</ErrorReport>
23+
<WarningLevel>4</WarningLevel>
24+
<UseVSHostingProcess>false</UseVSHostingProcess>
25+
</PropertyGroup>
26+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27+
<DebugType>pdbonly</DebugType>
28+
<Optimize>true</Optimize>
29+
<OutputPath>bin\Release\</OutputPath>
30+
<DefineConstants>TRACE</DefineConstants>
31+
<ErrorReport>prompt</ErrorReport>
32+
<WarningLevel>4</WarningLevel>
33+
<DocumentationFile>bin\Release\Elasticsearch.Net.XML</DocumentationFile>
34+
<NoWarn>1591,1572,1571,1573,1587,1570</NoWarn>
35+
</PropertyGroup>
36+
<PropertyGroup>
37+
<SignAssembly>true</SignAssembly>
38+
</PropertyGroup>
39+
<PropertyGroup>
40+
<AssemblyOriginatorKeyFile>..\..\build\keys\keypair.snk</AssemblyOriginatorKeyFile>
41+
</PropertyGroup>
42+
<ItemGroup>
43+
<Reference Include="System" />
44+
<Reference Include="System.Core" />
45+
<Reference Include="System.Runtime.Serialization" />
46+
<Reference Include="System.Xml.Linq" />
47+
<Reference Include="System.Data.DataSetExtensions" />
48+
<Reference Include="Microsoft.CSharp" />
49+
<Reference Include="System.Data" />
50+
<Reference Include="System.Xml" />
51+
</ItemGroup>
52+
<ItemGroup>
53+
<Compile Include="Connection\Configuration\IRequestConfiguration.cs" />
54+
<Compile Include="Connection\Configuration\RequestConfiguration.cs" />
55+
<Compile Include="Connection\Configuration\RequestConfigurationDescriptor.cs" />
56+
<Compile Include="Connection\ITransportDelegator.cs" />
57+
<Compile Include="Connection\RequestHandlers\RequestHandler.cs" />
58+
<Compile Include="Connection\RequestHandlers\RequestHandlerAsync.cs" />
59+
<Compile Include="Connection\RequestHandlers\RequestHandlerBase.cs" />
60+
<Compile Include="Connection\RequestState\IRequestTimings.cs" />
61+
<Compile Include="Connection\RequestState\ITransportRequestState.cs" />
62+
<Compile Include="Connection\RequestState\NoopRequestTimings.cs" />
63+
<Compile Include="Connection\RequestState\RequestTimings.cs" />
64+
<Compile Include="Connection\Security\BasicAuthorizationCredentials.cs" />
65+
<Compile Include="Domain\RequestParameters\BaseRequestParameters.cs" />
66+
<Compile Include="Domain\Response\CallMetrics.cs" />
67+
<Compile Include="Domain\Response\IElasticsearchResponse.cs" />
68+
<Compile Include="Domain\IHideObjectMembers.cs" />
69+
<Compile Include="Domain\RequestParameters\IRequestParameters.cs" />
70+
<Compile Include="Domain\Response\RequestMetrics.cs" />
71+
<Compile Include="Domain\Response\RequestType.cs" />
72+
<Compile Include="Domain\Response\VoidResponse.cs" />
73+
<Compile Include="Domain\Response\ElasticsearchServerError.cs" />
74+
<Compile Include="Exceptions\OneToOneServerException.cs" />
75+
<Compile Include="Exceptions\ElasticsearchAuthException.cs" />
76+
<Compile Include="Extensions\ExceptionExtensions.cs" />
77+
<Compile Include="IElasticsearchClient.cs" />
78+
<Compile Include="Obsolete\RequestParameters\FlushRequestParametersObsoleteExtensions.cs" />
79+
<Compile Include="Obsolete\IndicesDeleteAlias.cs" />
80+
<Compile Include="Obsolete\IndicesPutAlias.cs" />
81+
<Compile Include="Obsolete\IndicesRecoveryStatus.cs" />
82+
<Compile Include="Obsolete\IndicesTemplateExists.cs" />
83+
<Compile Include="Obsolete\IndicesGetFieldMapping.cs" />
84+
<Compile Include="Obsolete\Mpercolate.cs" />
85+
<Compile Include="Obsolete\IndicesExistsType.cs" />
86+
<Compile Include="Obsolete\Obsolete.cs" />
87+
<Compile Include="Obsolete\IndicesExistsAlias.cs" />
88+
<Compile Include="Providers\DateTimeProvider.cs" />
89+
<Compile Include="Connection\HttpConnection.cs" />
90+
<Compile Include="Exceptions\ElasticsearchServerException.cs" />
91+
<Compile Include="Exceptions\ConnectionException.cs" />
92+
<Compile Include="Connection\Configuration\ConnectionConfiguration.cs" />
93+
<Compile Include="ConnectionPool\EndpointState.cs" />
94+
<Compile Include="ConnectionPool\IConnectionPool.cs" />
95+
<Compile Include="Providers\IDateTimeProvider.cs" />
96+
<Compile Include="ConnectionPool\SingleNodeConnectionPool.cs" />
97+
<Compile Include="Providers\IMemoryStreamProvider.cs" />
98+
<Compile Include="Providers\MemoryStreamProvider.cs" />
99+
<Compile Include="Providers\Sniffer.cs" />
100+
<Compile Include="ConnectionPool\SniffingConnectionPool.cs" />
101+
<Compile Include="ConnectionPool\StaticConnectionPool.cs" />
102+
<Compile Include="Connection\Transport.cs" />
103+
<Compile Include="Connection\ITransport.cs" />
104+
<Compile Include="Domain\Response\ElasticsearchResponse.cs" />
105+
<Compile Include="Connection\RequestState\TransportRequestState.cs" />
106+
<Compile Include="Connection\IConnection.cs" />
107+
<Compile Include="Connection\Configuration\IConnectionConfigurationValues.cs" />
108+
<Compile Include="Connection\Configuration\IConnectionConfiguration.cs" />
109+
<Compile Include="Connection\InMemoryConnection.cs" />
110+
<Compile Include="ElasticsearchClient.Generated.cs" />
111+
<Compile Include="Domain\Response\DynamicDictionary.cs" />
112+
<Compile Include="Domain\Response\ElasticsearchDynamicValue.cs" />
113+
<Compile Include="Exceptions\MaxRetryException.cs" />
114+
<Compile Include="Extensions\DateExtensions.cs" />
115+
<Compile Include="Extensions\Extensions.cs" />
116+
<Compile Include="Extensions\NameValueCollectionExtensions.cs" />
117+
<Compile Include="Extensions\StringExtensions.cs" />
118+
<Compile Include="Extensions\TypeExtensions.cs" />
119+
<Compile Include="ElasticsearchClient.cs" />
120+
<Compile Include="IElasticsearchClient.Generated.cs" />
121+
<Compile Include="Properties\AssemblyInfo.cs" />
122+
<Compile Include="Domain\Enums.Generated.cs" />
123+
<Compile Include="Domain\RequestParameters\FluentRequestParameters.cs" />
124+
<Compile Include="Domain\RequestParameters\RequestParameters.Generated.cs" />
125+
<Compile Include="Properties\ClsCompliancy.cs" />
126+
<Compile Include="Purify\IPurify.cs" />
127+
<Compile Include="Purify\PurifierDotNet.cs" />
128+
<Compile Include="Purify\PurifierMono.cs" />
129+
<Compile Include="Purify\Purify.cs" />
130+
<Compile Include="Purify\UriInfo.cs" />
131+
<Compile Include="Serialization\ElasticsearchDefaultSerializer.cs" />
132+
<Compile Include="Serialization\IElasticsearchSerializer.cs" />
133+
<Compile Include="Serialization\SerializationFormatting.cs" />
134+
<Compile Include="Serialization\SimpleJson.cs" />
135+
</ItemGroup>
136+
<ItemGroup>
137+
<None Include="paket.references" />
138+
</ItemGroup>
139+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
139140
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
140141
Other similar extension points exist, see Microsoft.Common.targets.
141142
<Target Name="BeforeBuild">
142143
</Target>
143144
<Target Name="AfterBuild">
144145
</Target>
145-
-->
146-
<Import Project="..\..\.paket\paket.targets" />
146+
-->
147+
<Import Project="..\..\.paket\paket.targets" />
147148
</Project>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using System.Reflection;
3+
4+
namespace Elasticsearch.Net
5+
{
6+
internal static class ExceptionExtensions
7+
{
8+
private static readonly Lazy<MethodInfo> preserveStackTraceMethodInfo = new Lazy<MethodInfo>(() =>
9+
typeof(Exception).GetMethod("InternalPreserveStackTrace", BindingFlags.Instance | BindingFlags.NonPublic)
10+
);
11+
12+
public static void RethrowKeepingStackTrace(this Exception exception)
13+
{
14+
// In .Net 4.5 it would be simple : ExceptionDispatchInfo.Capture(exception).Throw();
15+
// But as NEST target .Net 4.0 the old internal method must be used
16+
if (preserveStackTraceMethodInfo.Value != null)
17+
{
18+
preserveStackTraceMethodInfo.Value.Invoke(exception, null);
19+
}
20+
throw exception;
21+
}
22+
}
23+
}

src/Nest/ElasticClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,13 @@ D descriptor
142142
{
143143
var mr = r.Exception.InnerException as MaxRetryException;
144144
if (mr != null)
145-
throw mr;
145+
mr.RethrowKeepingStackTrace();
146146

147147
var ae = r.Exception.Flatten();
148148
if (ae.InnerException != null)
149-
throw ae.InnerException;
150-
throw ae;
149+
ae.InnerException.RethrowKeepingStackTrace();
150+
151+
ae.RethrowKeepingStackTrace();
151152
}
152153
return ResultsSelector<D, Q, R>(r.Result, descriptor);
153154
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using System.Reflection;
3+
4+
namespace Elasticsearch.Net
5+
{
6+
internal static class ExceptionExtensions
7+
{
8+
private static readonly Lazy<MethodInfo> preserveStackTraceMethodInfo = new Lazy<MethodInfo>(() =>
9+
typeof(Exception).GetMethod("InternalPreserveStackTrace", BindingFlags.Instance | BindingFlags.NonPublic)
10+
);
11+
12+
public static void RethrowKeepingStackTrace(this Exception exception)
13+
{
14+
// In .Net 4.5 it would be simple : ExceptionDispatchInfo.Capture(exception).Throw();
15+
// But as NEST target .Net 4.0 the old internal method must be used
16+
if (preserveStackTraceMethodInfo.Value != null)
17+
{
18+
preserveStackTraceMethodInfo.Value.Invoke(exception, null);
19+
}
20+
throw exception;
21+
}
22+
}
23+
}

src/Nest/Nest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@
411411
<Compile Include="ExposedInternals\NestSerializer.cs" />
412412
<Compile Include="Enums\GeoDistance.cs" />
413413
<Compile Include="IHighLevelToLowLevelDispatcher.cs" />
414+
<Compile Include="Extensions\ExceptionExtensions.cs" />
414415
<Compile Include="Obsolete\Obsolete.cs" />
415416
<Compile Include="Resolvers\Converters\Aggregations\FiltersAggregatorConverter.cs" />
416417
<Compile Include="Resolvers\Converters\Aggregations\FilterAggregatorConverter.cs" />

0 commit comments

Comments
 (0)