Skip to content

Commit b757bf4

Browse files
committed
Added DisableServerBalancer: support for server-side load balancing of sessions.
1 parent d904ed8 commit b757bf4

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed

src/Ydb.Sdk/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## v0.20.2
2+
- Added `DisableServerBalancer` option to ADO.NET session creation; default false.
3+
14
## v0.20.1
25

36
- Fixed bug ADO.NET: `YdbSchema.SchemaObjects` and `Ydb.DescribeTable`methods are public for `EntityFrameworkCore.Ydb`.

src/Ydb.Sdk/src/GrpcRequestSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class GrpcRequestSettings
88
{
99
public string TraceId { get; set; } = string.Empty;
1010
public TimeSpan TransportTimeout { get; set; } = TimeSpan.Zero;
11-
public ImmutableArray<string> CustomClientHeaders { get; } = new();
11+
public List<string> List { get; } = new();
1212
public CancellationToken CancellationToken = default;
1313

1414
internal long NodeId { get; set; }

src/Ydb.Sdk/src/IDriver.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ protected async ValueTask<CallOptions> GetCallOptions(GrpcRequestSettings settin
181181
{
182182
meta.Add(Metadata.RpcTraceIdHeader, settings.TraceId);
183183
}
184-
185-
if (!Config.DisableServerBalancer)
184+
185+
if (!settings.List.Contains("session-balancer"))
186186
{
187187
meta.Add(Metadata.RpcClientCapabilitiesHeader, "session-balancer");
188188
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public SessionPoolConfig(uint? sizeLimit = null)
1616
public TimeSpan PeriodicCheckInterval { get; set; } = TimeSpan.FromSeconds(10);
1717
public TimeSpan KeepAliveTimeout { get; set; } = TimeSpan.FromSeconds(1);
1818
public TimeSpan CreateSessionTimeout { get; set; } = TimeSpan.FromSeconds(1);
19+
20+
public bool DisableServerBalancer { get; set; } = GrpcDefaultSettings.DisableServerBalancer;
1921
}
2022

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

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,18 @@ public SessionPool(Driver driver, SessionPoolConfig config) :
2323

2424
private protected override async Task<GetSessionResponse> CreateSession()
2525
{
26-
var createSessionResponse = await _tableClient.CreateSession(new CreateSessionSettings
26+
var createSessionSettings = new CreateSessionSettings
2727
{
2828
TransportTimeout = Config.CreateSessionTimeout,
29-
OperationTimeout = Config.CreateSessionTimeout
30-
});
29+
OperationTimeout = Config.CreateSessionTimeout,
30+
};
31+
32+
if (!Config.DisableServerBalancer)
33+
{
34+
createSessionSettings.List.Add("session-balancer");
35+
}
36+
37+
var createSessionResponse = await _tableClient.CreateSession(createSessionSettings);
3138

3239
lock (Lock)
3340
{

0 commit comments

Comments
 (0)