diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-12-26 09:20:30 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-12-26 09:20:30 -0500 |
| commit | e6359469b6843792f887456b53de9eb59941da4c (patch) | |
| tree | 4af7a3300f4b277076e955c6f051b405a42904d3 | |
| parent | 72a956d02272e3e11211ec1e16ae187018e5843a (diff) | |
removed lazy loading of users
3 files changed, 15 insertions, 49 deletions
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs b/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs index 0f35a766a..a0b7ff515 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs @@ -28,18 +28,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// </summary> public async void Run() { - #if __MonoCS__ - try - { - await _userManager.RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false); - } - catch - { - System.Console.WriteLine("RefreshUsersMetadata task error: No users? First time running?"); - } - #else await _userManager.RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false); - #endif } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 4243aecfe..a6d670483 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -22,39 +22,10 @@ namespace MediaBrowser.Server.Implementations.Library public class UserManager : IUserManager { /// <summary> - /// The _users - /// </summary> - private IEnumerable<User> _users; - /// <summary> - /// The _user lock - /// </summary> - private object _usersSyncLock = new object(); - /// <summary> - /// The _users initialized - /// </summary> - private bool _usersInitialized; - /// <summary> /// Gets the users. /// </summary> /// <value>The users.</value> - public IEnumerable<User> Users - { - get - { - // Call ToList to exhaust the stream because we'll be iterating over this multiple times - LazyInitializer.EnsureInitialized(ref _users, ref _usersInitialized, ref _usersSyncLock, LoadUsers); - return _users; - } - internal set - { - _users = value; - - if (value == null) - { - _usersInitialized = false; - } - } - } + public IEnumerable<User> Users { get; private set; } /// <summary> /// The _logger @@ -78,11 +49,13 @@ namespace MediaBrowser.Server.Implementations.Library /// </summary> /// <param name="logger">The logger.</param> /// <param name="configurationManager">The configuration manager.</param> + /// <param name="userRepository">The user repository.</param> public UserManager(ILogger logger, IServerConfigurationManager configurationManager, IUserRepository userRepository) { _logger = logger; UserRepository = userRepository; ConfigurationManager = configurationManager; + Users = new List<User>(); } #region UserUpdated Event @@ -132,6 +105,11 @@ namespace MediaBrowser.Server.Implementations.Library return Users.FirstOrDefault(u => u.Id == id); } + public async Task Initialize() + { + Users = await LoadUsers().ConfigureAwait(false); + } + /// <summary> /// Authenticates a User and returns a result indicating whether or not it succeeded /// </summary> @@ -185,7 +163,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Loads the users from the repository /// </summary> /// <returns>IEnumerable{User}.</returns> - private IEnumerable<User> LoadUsers() + private async Task<IEnumerable<User>> LoadUsers() { var users = UserRepository.RetrieveAllUsers().ToList(); @@ -198,10 +176,7 @@ namespace MediaBrowser.Server.Implementations.Library user.DateLastSaved = DateTime.UtcNow; - var task = UserRepository.SaveUser(user, CancellationToken.None); - - // Hate having to block threads - Task.WaitAll(task); + await UserRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); users.Add(user); } @@ -284,7 +259,7 @@ namespace MediaBrowser.Server.Implementations.Library } public event EventHandler<GenericEventArgs<User>> UserCreated; - + /// <summary> /// Creates the user. /// </summary> @@ -311,11 +286,11 @@ namespace MediaBrowser.Server.Implementations.Library Users = list; user.DateLastSaved = DateTime.UtcNow; - + await UserRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); EventHelper.QueueEventIfNotNull(UserCreated, this, new GenericEventArgs<User> { Argument = user }, _logger); - + return user; } diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 5e6a156bb..00db91f41 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -292,6 +292,8 @@ namespace MediaBrowser.ServerApplication await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask).ConfigureAwait(false); progress.Report(100); + await ((UserManager) UserManager).Initialize().ConfigureAwait(false); + SetKernelProperties(); } |
