Skip to content

Commit eca3da5

Browse files
committed
Added server balancer disabling check in Query/SessionPool
1 parent b757bf4 commit eca3da5

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

src/Ydb.Sdk/src/Ado/YdbConnectionStringBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ private void InitDefaultValues()
3838
_maxReceiveMessageSize = GrpcDefaultSettings.MaxReceiveMessageSize;
3939
_disableDiscovery = GrpcDefaultSettings.DisableDiscovery;
4040
_createSessionTimeout = SessionPoolDefaultSettings.CreateSessionTimeoutSeconds;
41+
_disableServerBalancer = false;
4142
}
4243

4344
public string Host

src/Ydb.Sdk/src/DriverConfig.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Reflection;
22
using System.Security.Cryptography.X509Certificates;
33
using Ydb.Sdk.Auth;
4+
using Ydb.Sdk.Pool;
45

56
namespace Ydb.Sdk;
67

@@ -26,7 +27,7 @@ public class DriverConfig
2627

2728
public int MaxSendMessageSize { get; init; } = GrpcDefaultSettings.MaxSendMessageSize;
2829
public int MaxReceiveMessageSize { get; init; } = GrpcDefaultSettings.MaxReceiveMessageSize;
29-
public bool DisableServerBalancer { get; init; } = GrpcDefaultSettings.DisableServerBalancer;
30+
public bool DisableServerBalancer { get; init; } = SessionPoolDefaultSettings.DisableServerBalancer;
3031

3132
internal X509Certificate2Collection CustomServerCertificates { get; } = new();
3233
internal TimeSpan EndpointDiscoveryInterval = TimeSpan.FromMinutes(1);

src/Ydb.Sdk/src/IDriver.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,7 @@ protected async ValueTask<CallOptions> GetCallOptions(GrpcRequestSettings settin
182182
meta.Add(Metadata.RpcTraceIdHeader, settings.TraceId);
183183
}
184184

185-
if (!settings.List.Contains("session-balancer"))
186-
{
185+
foreach (var setting in settings.List) {
187186
meta.Add(Metadata.RpcClientCapabilitiesHeader, "session-balancer");
188187
}
189188

src/Ydb.Sdk/src/Pool/SessionPool.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ internal abstract class SessionPool<TSession> where TSession : SessionBase<TSess
1111
private readonly ConcurrentQueue<TSession> _idleSessions = new();
1212
private readonly int _createSessionTimeoutMs;
1313
private readonly int _size;
14+
private protected readonly SessionPoolConfig Config;
1415

1516
protected readonly ILogger<SessionPool<TSession>> Logger;
1617

@@ -253,12 +254,15 @@ internal TS MakeGrpcRequestSettings<TS>(TS settings) where TS : GrpcRequestSetti
253254
internal record SessionPoolConfig(
254255
int MaxSessionPool = SessionPoolDefaultSettings.MaxSessionPool,
255256
int CreateSessionTimeout = SessionPoolDefaultSettings.CreateSessionTimeoutSeconds,
256-
bool DisposeDriver = false
257+
bool DisposeDriver = false,
258+
bool DisableServerBalancer = SessionPoolDefaultSettings.DisableServerBalancer
257259
);
258260

259261
internal static class SessionPoolDefaultSettings
260262
{
261263
internal const int MaxSessionPool = 100;
262264

263265
internal const int CreateSessionTimeoutSeconds = 5;
266+
267+
internal const bool DisableServerBalancer = false;
264268
}

src/Ydb.Sdk/src/Services/Query/SessionPool.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,20 @@ protected override async Task<Session> CreateSession(
3535
CancellationToken cancellationToken = default
3636
)
3737
{
38+
var requestSettings = new GrpcRequestSettings
39+
{
40+
CancellationToken = cancellationToken
41+
};
42+
43+
if (!Config.DisableServerBalancer)
44+
{
45+
requestSettings.List.Add("session-balancer");
46+
}
47+
3848
var response = await _driver.UnaryCall(
3949
QueryService.CreateSessionMethod,
4050
CreateSessionRequest,
41-
new GrpcRequestSettings { CancellationToken = cancellationToken }
51+
requestSettings
4252
);
4353

4454
Status.FromProto(response.Status, response.Issues).EnsureSuccess();

src/Ydb.Sdk/src/Services/Sessions/SessionPoolBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.Logging;
22
using Ydb.Sdk.Client;
3+
using Ydb.Sdk.Pool;
34

45
namespace Ydb.Sdk.Services.Sessions;
56

@@ -17,7 +18,7 @@ public SessionPoolConfig(uint? sizeLimit = null)
1718
public TimeSpan KeepAliveTimeout { get; set; } = TimeSpan.FromSeconds(1);
1819
public TimeSpan CreateSessionTimeout { get; set; } = TimeSpan.FromSeconds(1);
1920

20-
public bool DisableServerBalancer { get; set; } = GrpcDefaultSettings.DisableServerBalancer;
21+
public bool DisableServerBalancer { get; set; } = SessionPoolDefaultSettings.DisableServerBalancer;
2122
}
2223

2324
public class GetSessionResponse<TSession> : ResponseWithResultBase<TSession>, IDisposable where TSession : SessionBase

src/Ydb.Sdk/src/Services/Table/SessionPool.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private protected override async Task<GetSessionResponse> CreateSession()
2626
var createSessionSettings = new CreateSessionSettings
2727
{
2828
TransportTimeout = Config.CreateSessionTimeout,
29-
OperationTimeout = Config.CreateSessionTimeout,
29+
OperationTimeout = Config.CreateSessionTimeout
3030
};
3131

3232
if (!Config.DisableServerBalancer)

0 commit comments

Comments
 (0)