Fix threads being cross-disposed from DatabaseContextFactory

This commit is contained in:
smoogipoo
2018-08-22 14:07:52 +09:00
parent 0d4dbee34b
commit 50b8daf939
2 changed files with 10 additions and 2 deletions

View File

@ -5,7 +5,6 @@ using System;
using System.Linq;
using System.Threading;
using Microsoft.EntityFrameworkCore.Storage;
using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Platform;
namespace osu.Game.Database
@ -118,7 +117,9 @@ namespace osu.Game.Database
private void recycleThreadContexts()
{
threadContexts?.Values.ForEach(c => c.Dispose());
// Contexts for other threads are not disposed as they may be in use elsewhere. Instead, fresh contexts are exposed
// for other threads to use, and we rely on the finalizer inside OsuDbContext to handle their previous contexts
threadContexts?.Value.Dispose();
threadContexts = new ThreadLocal<OsuDbContext>(CreateContext, true);
}