From 6ad86ce5b780c6b74fbd3f37bc2e80c3d4476310 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sun, 31 Jul 2022 01:06:55 +0900 Subject: [PATCH] Run collection import process asynchronously Actually required to avoid deadlocking.. --- osu.Game/Database/RealmAccess.cs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/osu.Game/Database/RealmAccess.cs b/osu.Game/Database/RealmAccess.cs index 8ab04cce3e..1a0c03af7d 100644 --- a/osu.Game/Database/RealmAccess.cs +++ b/osu.Game/Database/RealmAccess.cs @@ -794,22 +794,23 @@ namespace osu.Game.Database break; case 21: - try - { - // Migrate collections from external file to inside realm. - // We use the "legacy" importer because that is how things were actually being saved out until now. - var legacyCollectionImporter = new LegacyCollectionImporter(this); + // Migrate collections from external file to inside realm. + // We use the "legacy" importer because that is how things were actually being saved out until now. + var legacyCollectionImporter = new LegacyCollectionImporter(this); - if (legacyCollectionImporter.GetAvailableCount(storage).GetResultSafely() > 0) - { - legacyCollectionImporter.ImportFromStorage(storage).WaitSafely(); - storage.Move("collection.db", "collection.db.migrated"); - } - } - catch (Exception e) + if (legacyCollectionImporter.GetAvailableCount(storage).GetResultSafely() > 0) { - // can be removed 20221027 (just for initial safety). - Logger.Error(e, "Collections could not be migrated to realm. Please provide your \"collection.db\" to the dev team."); + legacyCollectionImporter.ImportFromStorage(storage).ContinueWith(task => + { + if (task.Exception != null) + { + // can be removed 20221027 (just for initial safety). + Logger.Error(task.Exception.InnerException, "Collections could not be migrated to realm. Please provide your \"collection.db\" to the dev team."); + return; + } + + storage.Move("collection.db", "collection.db.migrated"); + }); } break;