Skip to content

Commit d904ed8

Browse files
committed
Add: hint "session-balancer"
1 parent 0ebd3e1 commit d904ed8

File tree

6 files changed

+30
-3
lines changed

6 files changed

+30
-3
lines changed

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,18 @@ public int MaxReceiveMessageSize
236236

237237
private int _maxReceiveMessageSize;
238238

239+
public bool DisableServerBalancer
240+
{
241+
get => _disableServerBalancer;
242+
set
243+
{
244+
_disableServerBalancer = value;
245+
SaveValue(nameof(DisableServerBalancer), value);
246+
}
247+
}
248+
249+
private bool _disableServerBalancer;
250+
239251
public bool DisableDiscovery
240252
{
241253
get => _disableDiscovery;
@@ -334,7 +346,8 @@ internal async Task<IDriver> BuildDriver()
334346
Password = Password,
335347
EnableMultipleHttp2Connections = EnableMultipleHttp2Connections,
336348
MaxSendMessageSize = MaxSendMessageSize,
337-
MaxReceiveMessageSize = MaxReceiveMessageSize
349+
MaxReceiveMessageSize = MaxReceiveMessageSize,
350+
DisableServerBalancer = DisableServerBalancer
338351
};
339352
var loggerFactory = LoggerFactory ?? NullLoggerFactory.Instance;
340353

@@ -433,6 +446,9 @@ static YdbConnectionOption()
433446
AddOption(new YdbConnectionOption<int>(IntExtractor,
434447
(builder, createSessionTimeout) => builder.CreateSessionTimeout = createSessionTimeout),
435448
"CreateSessionTimeout", "Create Session Timeout");
449+
AddOption(new YdbConnectionOption<bool>(BoolExtractor, (builder, disableServerBalancer) =>
450+
builder.DisableServerBalancer = disableServerBalancer),
451+
"DisableServerBalancer", "Disable Server Balancer");
436452
}
437453

438454
private static void AddOption(YdbConnectionOption option, params string[] keys)

src/Ydb.Sdk/src/DriverConfig.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class DriverConfig
2626

2727
public int MaxSendMessageSize { get; init; } = GrpcDefaultSettings.MaxSendMessageSize;
2828
public int MaxReceiveMessageSize { get; init; } = GrpcDefaultSettings.MaxReceiveMessageSize;
29+
public bool DisableServerBalancer { get; init; } = GrpcDefaultSettings.DisableServerBalancer;
2930

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

src/Ydb.Sdk/src/GrpcDefaultSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ internal static class GrpcDefaultSettings
2121
internal const bool EnableMultipleHttp2Connections = false;
2222

2323
internal const bool DisableDiscovery = false;
24+
25+
internal const bool DisableServerBalancer = false;
2426
}

src/Ydb.Sdk/src/IDriver.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ protected async ValueTask<CallOptions> GetCallOptions(GrpcRequestSettings settin
182182
meta.Add(Metadata.RpcTraceIdHeader, settings.TraceId);
183183
}
184184

185+
if (!Config.DisableServerBalancer)
186+
{
187+
meta.Add(Metadata.RpcClientCapabilitiesHeader, "session-balancer");
188+
}
189+
185190
var options = new CallOptions(headers: meta, cancellationToken: settings.CancellationToken);
186191

187192
if (settings.TransportTimeout != TimeSpan.Zero)

src/Ydb.Sdk/src/Metadata.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ internal static class Metadata
88
public const string RpcTraceIdHeader = "x-ydb-trace-id";
99
public const string RpcSdkInfoHeader = "x-ydb-sdk-build-info";
1010
public const string RpcServerHintsHeader = "x-ydb-server-hints";
11+
public const string RpcClientCapabilitiesHeader = "x-ydb-client-capabilities";
1112

1213
public const string GracefulShutdownHint = "session-close";
1314
}

src/Ydb.Sdk/tests/Ado/YdbConnectionStringBuilderTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public void InitDefaultValues_WhenEmptyConstructorInvoke_ReturnDefaultConnection
2424
Assert.Equal(64 * 1024 * 1024, ydbConnectionStringBuilder.MaxSendMessageSize);
2525
Assert.Equal(64 * 1024 * 1024, ydbConnectionStringBuilder.MaxReceiveMessageSize);
2626
Assert.False(ydbConnectionStringBuilder.DisableDiscovery);
27+
Assert.False(ydbConnectionStringBuilder.DisableServerBalancer);
2728
Assert.Equal(5, ydbConnectionStringBuilder.CreateSessionTimeout);
2829
}
2930

@@ -45,7 +46,7 @@ public void InitConnectionStringBuilder_WhenExpectedKeys_ReturnUpdatedConnection
4546
"ConnectTimeout=30;KeepAlivePingDelay=30;KeepAlivePingTimeout=60;" +
4647
"EnableMultipleHttp2Connections=true;CreateSessionTimeout=30;" +
4748
"MaxSendMessageSize=1000000;MaxReceiveMessageSize=1000000;" +
48-
"DisableDiscovery=true"
49+
"DisableDiscovery=true;DisableServerBalancer=true"
4950
);
5051

5152
Assert.Equal(2135, connectionString.Port);
@@ -64,8 +65,9 @@ public void InitConnectionStringBuilder_WhenExpectedKeys_ReturnUpdatedConnection
6465
"ConnectTimeout=30;KeepAlivePingDelay=30;KeepAlivePingTimeout=60;" +
6566
"EnableMultipleHttp2Connections=True;CreateSessionTimeout=30;" +
6667
"MaxSendMessageSize=1000000;MaxReceiveMessageSize=1000000;" +
67-
"DisableDiscovery=True", connectionString.ConnectionString);
68+
"DisableDiscovery=True;DisableServerBalancer=True", connectionString.ConnectionString);
6869
Assert.True(connectionString.DisableDiscovery);
70+
Assert.True(connectionString.DisableServerBalancer);
6971
Assert.Equal(30, connectionString.CreateSessionTimeout);
7072
}
7173

0 commit comments

Comments
 (0)