9e66708d87
Ownership is claimed with a Lua check-and-set keyed on the instance holding the websocket, routing prefers a live controller over a local copy, the session list deduplicates by owner, removal is ownership-checked, undelivered routed messages surface, single-session lookups stop scanning the keyspace and directory writes leave the request path bounded by a timeout.
29 lines
1.0 KiB
C#
29 lines
1.0 KiB
C#
namespace MediaBrowser.Controller.Session;
|
|
|
|
/// <summary>
|
|
/// Configuration options for the session directory and the cross-instance bus that goes with it.
|
|
/// </summary>
|
|
public sealed class SessionDirectoryOptions
|
|
{
|
|
/// <summary>
|
|
/// The configuration section these options bind from.
|
|
/// </summary>
|
|
public const string ConfigurationSection = "Jellyfin:SessionDirectory";
|
|
|
|
/// <summary>
|
|
/// Gets or sets how long in seconds a published entry survives without being refreshed. An instance
|
|
/// that dies stops refreshing, so its sessions leave the directory after this long.
|
|
/// </summary>
|
|
public int EntryTtlSeconds { get; set; } = 60;
|
|
|
|
/// <summary>
|
|
/// Gets or sets how often in seconds an instance republishes the sessions it holds.
|
|
/// </summary>
|
|
public int RefreshIntervalSeconds { get; set; } = 20;
|
|
|
|
/// <summary>
|
|
/// Gets or sets how long in seconds a single directory operation may take before it is abandoned.
|
|
/// </summary>
|
|
public int OperationTimeoutSeconds { get; set; } = 5;
|
|
}
|