From 071a8c670942c04a2566e493f278acc4778352b1 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 29 Nov 2021 17:34:56 +0900 Subject: [PATCH 1/2] Add test coverage showing `RealmLive` failure after an attach --- osu.Game.Tests/Database/RealmLiveTests.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/osu.Game.Tests/Database/RealmLiveTests.cs b/osu.Game.Tests/Database/RealmLiveTests.cs index f86761fdc8..a4b82fb8b1 100644 --- a/osu.Game.Tests/Database/RealmLiveTests.cs +++ b/osu.Game.Tests/Database/RealmLiveTests.cs @@ -29,6 +29,22 @@ namespace osu.Game.Tests.Database }); } + [Test] + public void TestAccessAfterAttach() + { + RunTestWithRealm((realmFactory, _) => + { + var beatmap = new RealmBeatmap(CreateRuleset(), new RealmBeatmapDifficulty(), new RealmBeatmapMetadata()); + + var liveBeatmap = beatmap.ToLive(); + + using (var context = realmFactory.CreateContext()) + context.Write(r => r.Add(beatmap)); + + Assert.IsFalse(liveBeatmap.PerformRead(l => l.Hidden)); + }); + } + [Test] public void TestAccessNonManaged() { From 6dcc244e2185ae77622c261b1a4c19c3cc901c8c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 29 Nov 2021 17:21:51 +0900 Subject: [PATCH 2/2] Fix `RealmLive` not working is data is attached to realm post-`ToLive` call --- osu.Game/Database/RealmLive.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/osu.Game/Database/RealmLive.cs b/osu.Game/Database/RealmLive.cs index 73e6715aaa..5ee40f5b4d 100644 --- a/osu.Game/Database/RealmLive.cs +++ b/osu.Game/Database/RealmLive.cs @@ -17,7 +17,7 @@ namespace osu.Game.Database { public Guid ID { get; } - public bool IsManaged { get; } + public bool IsManaged => data.IsManaged; private readonly SynchronizationContext? fetchedContext; private readonly int fetchedThreadId; @@ -37,8 +37,6 @@ namespace osu.Game.Database if (data.IsManaged) { - IsManaged = true; - fetchedContext = SynchronizationContext.Current; fetchedThreadId = Thread.CurrentThread.ManagedThreadId; }