Browse Source

Merge pull request #3663 from crobibero/efcore-leak

Add missing usings to UserManager

(cherry picked from commit 6b11cccb7fc0bb0320a4f4c4241e6509f2bfc716)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Bond-009 4 năm trước cách đây
mục cha
commit
809651ceaf

+ 13 - 0
Jellyfin.Server.Implementations/JellyfinDb.cs

@@ -1,5 +1,6 @@
 #pragma warning disable CS1591
 #pragma warning disable CS1591
 
 
+using System;
 using System.Linq;
 using System.Linq;
 using Jellyfin.Data;
 using Jellyfin.Data;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Entities;
@@ -133,6 +134,18 @@ namespace Jellyfin.Server.Implementations
             return base.SaveChanges();
             return base.SaveChanges();
         }
         }
 
 
+        /// <inheritdoc/>
+        public override void Dispose()
+        {
+            foreach (var entry in ChangeTracker.Entries())
+            {
+                entry.State = EntityState.Detached;
+            }
+
+            GC.SuppressFinalize(this);
+            base.Dispose();
+        }
+
         /// <inheritdoc />
         /// <inheritdoc />
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         {
         {

+ 12 - 3
Jellyfin.Server.Implementations/Users/UserManager.cs

@@ -102,7 +102,16 @@ namespace Jellyfin.Server.Implementations.Users
         }
         }
 
 
         /// <inheritdoc/>
         /// <inheritdoc/>
-        public IEnumerable<Guid> UsersIds => _dbProvider.CreateContext().Users.Select(u => u.Id);
+        public IEnumerable<Guid> UsersIds
+        {
+            get
+            {
+                using var dbContext = _dbProvider.CreateContext();
+                return dbContext.Users
+                    .Select(user => user.Id)
+                    .ToList();
+            }
+        }
 
 
         /// <inheritdoc/>
         /// <inheritdoc/>
         public User? GetUserById(Guid id)
         public User? GetUserById(Guid id)
@@ -637,7 +646,7 @@ namespace Jellyfin.Server.Implementations.Users
         /// <inheritdoc/>
         /// <inheritdoc/>
         public void UpdateConfiguration(Guid userId, UserConfiguration config)
         public void UpdateConfiguration(Guid userId, UserConfiguration config)
         {
         {
-            var dbContext = _dbProvider.CreateContext();
+            using var dbContext = _dbProvider.CreateContext();
             var user = dbContext.Users
             var user = dbContext.Users
                            .Include(u => u.Permissions)
                            .Include(u => u.Permissions)
                            .Include(u => u.Preferences)
                            .Include(u => u.Preferences)
@@ -670,7 +679,7 @@ namespace Jellyfin.Server.Implementations.Users
         /// <inheritdoc/>
         /// <inheritdoc/>
         public void UpdatePolicy(Guid userId, UserPolicy policy)
         public void UpdatePolicy(Guid userId, UserPolicy policy)
         {
         {
-            var dbContext = _dbProvider.CreateContext();
+            using var dbContext = _dbProvider.CreateContext();
             var user = dbContext.Users
             var user = dbContext.Users
                            .Include(u => u.Permissions)
                            .Include(u => u.Permissions)
                            .Include(u => u.Preferences)
                            .Include(u => u.Preferences)