diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index 60db904762..222f41e0dd 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -168,7 +168,7 @@ namespace MediaBrowser.Common.Implementations.Updates { // Let dev users get results more often for testing purposes var cacheLength = _config.CommonConfiguration.SystemUpdateLevel == PackageVersionClass.Dev - ? TimeSpan.FromHours(1) + ? TimeSpan.FromMinutes(15) : TimeSpan.FromHours(12); if ((DateTime.UtcNow - _lastPackageListResult.Item2) < cacheLength) diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 6bb6edf7a3..d3b6bc59f0 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -44,11 +44,13 @@ namespace MediaBrowser.Server.Implementations.Session /// The configuration manager. private readonly IServerConfigurationManager _configurationManager; + private object _sessionLock = new object(); + /// /// The _active connections /// - private readonly ConcurrentDictionary _activeConnections = - new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + private readonly Dictionary _activeConnections = + new Dictionary(StringComparer.OrdinalIgnoreCase); /// /// Occurs when [playback start]. @@ -84,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Session /// All connections. public IEnumerable Sessions { - get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate).ToList(); } + get { return _activeConnections.Values.ToList().OrderByDescending(c => c.LastActivityDate); } } /// @@ -193,18 +195,28 @@ namespace MediaBrowser.Server.Implementations.Session { var key = clientType + deviceId + appVersion; - var connection = _activeConnections.GetOrAdd(key, keyName => new SessionInfo + lock (_sessionLock) { - Client = clientType, - DeviceId = deviceId, - ApplicationVersion = appVersion, - Id = Guid.NewGuid() - }); + SessionInfo connection; - connection.DeviceName = deviceName; - connection.User = user; + if (!_activeConnections.TryGetValue(key, out connection)) + { + connection = new SessionInfo + { + Client = clientType, + DeviceId = deviceId, + ApplicationVersion = appVersion, + Id = Guid.NewGuid() + }; + + _activeConnections[key] = connection; + } - return connection; + connection.DeviceName = deviceName; + connection.User = user; + + return connection; + } } ///