Skip to content

Commit 5f33f6f

Browse files
committed
Update Elastic.Transport to 0.5.4
1 parent a6e1594 commit 5f33f6f

File tree

6 files changed

+34
-31
lines changed

6 files changed

+34
-31
lines changed

src/Elastic.Clients.Elasticsearch.Serverless/Core/ElasticsearchClientProductRegistration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public class ApiVersionMetaHeaderProducer : MetaHeaderProducer
7777

7878
public override string HeaderName => "Elastic-Api-Version";
7979

80-
public override string ProduceHeaderValue(RequestData requestData, bool isAsync) => _apiVersion;
80+
public override string ProduceHeaderValue(BoundConfiguration boundConfiguration, bool isAsync) => _apiVersion;
8181

8282
public ApiVersionMetaHeaderProducer(VersionInfo version)
8383
{

src/Elastic.Clients.Elasticsearch.Serverless/Elastic.Clients.Elasticsearch.Serverless.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<Nullable>annotations</Nullable>
2222
</PropertyGroup>
2323
<ItemGroup>
24-
<PackageReference Include="Elastic.Transport" Version="0.5.2" />
24+
<PackageReference Include="Elastic.Transport" Version="0.5.4" />
2525
</ItemGroup>
2626
<ItemGroup>
2727
<InternalsVisibleTo Include="Tests" Key="$(ExposedPublicKey)" />

src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<Nullable>annotations</Nullable>
2222
</PropertyGroup>
2323
<ItemGroup>
24-
<PackageReference Include="Elastic.Transport" Version="0.5.2" />
24+
<PackageReference Include="Elastic.Transport" Version="0.5.4" />
2525
</ItemGroup>
2626
<ItemGroup>
2727
<InternalsVisibleTo Include="Tests" Key="$(ExposedPublicKey)" />

src/Elastic.Clients.Elasticsearch/_Shared/Api/Esql/EsqlQueryRequest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace Elastic.Clients.Elasticsearch.Esql;
1717

1818
internal sealed class EsqlResponseBuilder : TypedResponseBuilder<EsqlQueryResponse>
1919
{
20-
protected override EsqlQueryResponse? Build(ApiCallDetails apiCallDetails, RequestData requestData,
20+
protected override EsqlQueryResponse? Build(ApiCallDetails apiCallDetails, BoundConfiguration boundConfiguration,
2121
Stream responseStream,
2222
string contentType, long contentLength)
2323
{
@@ -38,7 +38,7 @@ static byte[] BytesFromStream(Stream stream)
3838
}
3939
}
4040

41-
protected override async Task<EsqlQueryResponse?> BuildAsync(ApiCallDetails apiCallDetails, RequestData requestData,
41+
protected override async Task<EsqlQueryResponse?> BuildAsync(ApiCallDetails apiCallDetails, BoundConfiguration boundConfiguration,
4242
Stream responseStream,
4343
string contentType, long contentLength, CancellationToken cancellationToken = default)
4444
{

src/Elastic.Clients.Elasticsearch/_Shared/Client/ElasticsearchClient.cs

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System;
66
using System.Collections.Generic;
7+
using System.Diagnostics;
78
using System.Linq;
89
using System.Runtime.CompilerServices;
910
using System.Text.Json;
@@ -165,11 +166,11 @@ private ValueTask<TResponse> DoRequestCoreAsync<TRequest, TResponse, TRequestPar
165166
ValueTask<TResponse> SendRequest()
166167
{
167168
var (endpointPath, resolvedRouteValues, postData) = PrepareRequest<TRequest, TRequestParameters>(request);
168-
var openTelemetryData = PrepareOpenTelemetryData<TRequest, TRequestParameters>(request, resolvedRouteValues);
169+
var openTelemetryDataMutator = GetOpenTelemetryDataMutator<TRequest, TRequestParameters>(request, resolvedRouteValues);
169170

170171
return isAsync
171-
? new ValueTask<TResponse>(_transport.RequestAsync<TResponse>(endpointPath, postData, in openTelemetryData, request.RequestConfig, cancellationToken))
172-
: new ValueTask<TResponse>(_transport.Request<TResponse>(endpointPath, postData, in openTelemetryData, request.RequestConfig));
172+
? new ValueTask<TResponse>(_transport.RequestAsync<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfig, cancellationToken))
173+
: new ValueTask<TResponse>(_transport.Request<TResponse>(endpointPath, postData, openTelemetryDataMutator, request.RequestConfig));
173174
}
174175

175176
async ValueTask<TResponse> SendRequestWithProductCheck()
@@ -211,19 +212,19 @@ async ValueTask<TResponse> SendRequestWithProductCheckCore()
211212
// Send request
212213

213214
var (endpointPath, resolvedRouteValues, postData) = PrepareRequest<TRequest, TRequestParameters>(request);
214-
var openTelemetryData = PrepareOpenTelemetryData<TRequest, TRequestParameters>(request, resolvedRouteValues);
215+
var openTelemetryDataMutator = GetOpenTelemetryDataMutator<TRequest, TRequestParameters>(request, resolvedRouteValues);
215216

216217
TResponse response;
217218

218219
if (isAsync)
219220
{
220221
response = await _transport
221-
.RequestAsync<TResponse>(endpointPath, postData, in openTelemetryData, requestConfig, cancellationToken)
222+
.RequestAsync<TResponse>(endpointPath, postData, openTelemetryDataMutator, requestConfig, cancellationToken)
222223
.ConfigureAwait(false);
223224
}
224225
else
225226
{
226-
response = _transport.Request<TResponse>(endpointPath, postData, in openTelemetryData, requestConfig);
227+
response = _transport.Request<TResponse>(endpointPath, postData, openTelemetryDataMutator, requestConfig);
227228
}
228229

229230
// Evaluate product check result
@@ -252,39 +253,41 @@ async ValueTask<TResponse> SendRequestWithProductCheckCore()
252253
}
253254
}
254255

255-
private static OpenTelemetryData PrepareOpenTelemetryData<TRequest, TRequestParameters>(TRequest request, Dictionary<string, string> resolvedRouteValues)
256+
private static Action<Activity>? GetOpenTelemetryDataMutator<TRequest, TRequestParameters>(TRequest request, Dictionary<string, string>? resolvedRouteValues)
256257
where TRequest : Request<TRequestParameters>
257258
where TRequestParameters : RequestParameters, new()
258259
{
259260
// If there are no subscribed listeners, we avoid some work and allocations
260261
if (!Elastic.Transport.Diagnostics.OpenTelemetry.ElasticTransportActivitySourceHasListeners)
261-
return default;
262+
return null;
262263

263-
// We fall back to a general operation name in cases where the derived request fails to override the property
264-
var operationName = !string.IsNullOrEmpty(request.OperationName) ? request.OperationName : request.HttpMethod.GetStringValue();
264+
return OpenTelemetryDataMutator;
265265

266-
// TODO: Optimisation: We should consider caching these, either for cases where resolvedRouteValues is null, or
267-
// caching per combination of route values.
268-
// We should benchmark this first to assess the impact for common workloads.
269-
// The former is likely going to save some short-lived allocations, but only for requests to endpoints without required path parts.
270-
// The latter may bloat the cache as some combinations of path parts may rarely re-occur.
271-
var attributes = new Dictionary<string, object>
266+
void OpenTelemetryDataMutator(Activity activity)
272267
{
273-
[OpenTelemetry.SemanticConventions.DbOperation] = !string.IsNullOrEmpty(request.OperationName) ? request.OperationName : "unknown",
274-
[$"{OpenTelemetrySpanAttributePrefix}schema_url"] = OpenTelemetrySchemaVersion
275-
};
268+
// We fall back to a general operation name in cases where the derived request fails to override the property
269+
var operationName = !string.IsNullOrEmpty(request.OperationName) ? request.OperationName : request.HttpMethod.GetStringValue();
270+
271+
// TODO: Optimisation: We should consider caching these, either for cases where resolvedRouteValues is null, or
272+
// caching per combination of route values.
273+
// We should benchmark this first to assess the impact for common workloads.
274+
// The former is likely going to save some short-lived allocations, but only for requests to endpoints without required path parts.
275+
// The latter may bloat the cache as some combinations of path parts may rarely re-occur.
276+
277+
activity.DisplayName = operationName;
278+
279+
activity.SetTag(OpenTelemetry.SemanticConventions.DbOperation, !string.IsNullOrEmpty(request.OperationName) ? request.OperationName : "unknown");
280+
activity.SetTag($"{OpenTelemetrySpanAttributePrefix}schema_url", OpenTelemetrySchemaVersion);
281+
282+
if (resolvedRouteValues is null)
283+
return;
276284

277-
if (resolvedRouteValues is not null)
278-
{
279285
foreach (var value in resolvedRouteValues)
280286
{
281287
if (!string.IsNullOrEmpty(value.Key) && !string.IsNullOrEmpty(value.Value))
282-
attributes.Add($"{OpenTelemetrySpanAttributePrefix}path_parts.{value.Key}", value.Value);
288+
activity.SetTag($"{OpenTelemetrySpanAttributePrefix}path_parts.{value.Key}", value.Value);
283289
}
284290
}
285-
286-
var openTelemetryData = new OpenTelemetryData { SpanName = operationName, SpanAttributes = attributes };
287-
return openTelemetryData;
288291
}
289292

290293
private (EndpointPath endpointPath, Dictionary<string, string>? resolvedRouteValues, PostData data) PrepareRequest<TRequest, TRequestParameters>(TRequest request)

src/Playground/Playground.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<ItemGroup>
1111
<PackageReference Include="Moq" Version="4.18.2" />
1212
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
13-
<PackageReference Include="Elastic.Transport" Version="0.5.2" />
13+
<PackageReference Include="Elastic.Transport" Version="0.5.4" />
1414
<PackageReference Include="System.Text.Json" Version="8.0.5" />
1515
</ItemGroup>
1616

0 commit comments

Comments
 (0)