Commit Graph

1073 Commits

Author SHA1 Message Date
Dean Herbert 043599081b Split out `INotificationOverlay` to allow for easier testing 2022-04-18 20:14:01 +09:00
Dean Herbert e315313266 Split out `IDialogOverlay` to allow for easier testing 2022-04-18 18:36:26 +09:00
Dean Herbert 975883da5c Move all usages of `client.realm` filename to a single `const` 2022-03-30 13:34:48 +09:00
Dean Herbert 0433d2fe6a Add safety to realm instance retrieval in `RealmAccess` 2022-03-29 11:40:58 +09:00
Dean Herbert ea46e024c1 Avoid deadlock during migration failed exit process 2022-03-29 00:04:13 +09:00
Dean Herbert b6ae0ebb6f Limit macOS specific log output to macOS platforms specifically 2022-03-28 23:46:07 +09:00
Dean Herbert a98aac3bf2 Better inform users of migration failure reason when running Apply Silicon build
As mentioned in https://github.com/ppy/osu/discussions/17409#discussioncomment-2445464?
2022-03-28 17:34:36 +09:00
Dean Herbert b04ca111c6 Allow realm subscriptions to be initiated from a non-update thread 2022-03-24 23:41:07 +09:00
Salman Ahmed c2063f415d Remove unnecessary `MaxCombo` migration between unmapped database fields 2022-03-20 16:27:54 +03:00
Dean Herbert 6565c95b17 Remove unused variable 2022-03-08 18:19:54 +09:00
Dean Herbert 0718a55ad0 Add flow to allow recovery after running an older release (with a different realm database version)
As brought up in https://github.com/ppy/osu/discussions/17148
2022-03-08 18:15:28 +09:00
Dean Herbert 2a55c5e02e Add extension method to detect and isolate realm collection-level changes 2022-03-08 14:50:47 +09:00
Bartłomiej Dach 0fbc018a42
Remove redundant string interpolation prefixes 2022-03-03 20:21:09 +01:00
Dean Herbert 35f532fefa Add ability to watch properties via a `RealmAccess` helper method 2022-03-03 17:42:40 +09:00
Dean Herbert 7d11cfb301 Add detach mapping for `BeatmapUserSettings` 2022-03-01 20:12:59 +09:00
Dean Herbert 047e801da9 Store and retrieve offset from realm 2022-03-01 20:12:59 +09:00
Dean Herbert acf8db13ac Store user settings to realm 2022-03-01 18:44:15 +09:00
Dean Herbert 9a117467b5 Add `RealmAccess.WriteAsync` method 2022-03-01 18:44:05 +09:00
Dean Herbert 7fa5842783 Add global statistics output for all realm reads/writes 2022-03-01 18:31:18 +09:00
Dean Herbert 334fe1f120 Add `AsSplitQuery` specification to avoid optimisation recommendation log messages 2022-02-15 15:23:17 +09:00
Dean Herbert 8ec28dc8bc Update `OsuDbContext` in line with EF changes 2022-02-15 15:19:50 +09:00
Dean Herbert 908c31c687 Update stream read operations to use new helper methods 2022-02-11 16:02:25 +09:00
Bartłomiej Dach dc96c4888b
Add support for creating new blank difficulties 2022-02-02 21:55:33 +01:00
Bartłomiej Dach a378e78ced
Fix `RealmLive` unnecessarily passing ID around
Appears to have never been needed. When the `retrieveFromID` method was
created in 81b5717ae7, it didn't use the
`id` parameter for anything either.
2022-02-01 21:35:12 +01:00
Dean Herbert 1a14ccc7ee Run EF migrations before migrating to realm
Turns out that there are more than zero users that are upgrading from
old databases. I think we probably want to support this for now.

Tested against database in https://github.com/ppy/osu/discussions/16700
and one other I had locally, both work correctly.
2022-01-29 23:13:23 +09:00
Dean Herbert 942ea896f1 Skip scores missing beatmaps during realm migration 2022-01-28 01:20:32 +09:00
Dean Herbert 81461be49f Skip beatmap imports where ruleset is not present in realm
Closes #16651.

When a ruleset is not available, the `Find` call would return null. When
a null is passed to the constructor, `BeatmapInfo` would create an "osu"
ruleset, which tries to get stored to realm and fails on duplicate
primary key.

Probably need to add better safeties against this (or change that
constructor...) but this will fix the migration process.

Probably not serious enough to pull the build. This only affects
rulesets like karaoke which have custom beatmaps.
2022-01-28 00:14:20 +09:00
Dan Balasescu 9ff2b9eb95
Merge pull request #16640 from peppy/realm-migration-always-delete
Improve realm migration UX to give users a recovery path on error
2022-01-27 15:43:14 +09:00
Dean Herbert 67ccb87992 Add exception message to discussion template url 2022-01-27 14:56:04 +09:00
Dean Herbert fb081384e1 Add safety against zip creation potentially failing (probably can't but still) 2022-01-27 14:55:52 +09:00
Dean Herbert 465e7d29fe Avoid showing the external link warning 2022-01-27 14:53:11 +09:00
Dean Herbert 31abb372e5 Automatically zip and show the backup archive to the user 2022-01-27 14:52:58 +09:00
Dean Herbert b745252962 Show notification when migration fails to give users a recovery path 2022-01-27 14:39:11 +09:00
Dean Herbert deb5d75b5f Change migration process to always delete old EF database
It is already backed up, so this is probably fine.
2022-01-27 14:33:46 +09:00
Dean Herbert 587c0f965c Add more attempts to delete EF database
Just noticed in passing. Probably best we do this since it was known to
fail on windows in some rare cases.
2022-01-27 14:32:21 +09:00
Dean Herbert f21e3d0d86 Block collection loading until realm migration has completed 2022-01-27 00:34:51 +09:00
Dan Balasescu 94d3e2c90c
Merge branch 'master' into fix-out-of-order-events-on-block-fail 2022-01-26 19:08:55 +09:00
Dan Balasescu b1a23486c5
Merge pull request #16626 from peppy/fix-skin-section-realm-usage
Refactor `SkinSection` to avoid unnecessary realm queries
2022-01-26 19:01:15 +09:00
Dean Herbert 45636ce04b Remove collection `ToLive` helper method to avoid confusion 2022-01-26 18:26:37 +09:00
Dean Herbert 3aa681005b Skip importing scores which have no matching realm ruleset
There's no real way to recover these unless we want to start importing
rulesets into realm. And that seems counter productive. This can only
happen if users don't have the dll present any more, and it was removed
far before realm was tracking rulesets (else it would have an
`Available=0` entry in realm to match).
2022-01-26 18:04:54 +09:00
Dean Herbert 885fb92aad Move final empty result set sending to post-compact 2022-01-26 17:21:57 +09:00
Dean Herbert 791ea0308f Add flag to guard against deadlocks during blocking operations 2022-01-26 17:09:28 +09:00
Dean Herbert 11f0f3c17d Revert "Move final result set firing to before the update realm is disposed"
This reverts commit 24bcba6418.
2022-01-26 16:21:24 +09:00
Dean Herbert 24bcba6418 Move final result set firing to before the update realm is disposed
Without this, if any registered callback attempts to access
`RealmAccess.Realm` when handling the empty set callback, it will
deadlock the game.
2022-01-26 15:57:06 +09:00
Dean Herbert 5ea781faef `Send` unsubscribe actions to synchronization context for consistency and safety 2022-01-26 15:24:53 +09:00
Dean Herbert 91e0d1021f Merge branch 'master' into fix-out-of-order-events-on-block-fail 2022-01-26 15:21:10 +09:00
Dean Herbert cd71ec0edd Remove `ILive<>` interface (and use `abstract Live<>` instead) 2022-01-26 13:38:56 +09:00
Dean Herbert d37c3c463e Move statistics to static class 2022-01-26 13:29:12 +09:00
Dean Herbert c7947b3489 Add statistics for `Live` usage 2022-01-26 12:42:24 +09:00
Dean Herbert 56b06f34f0 Fix `RealmLive` not refetching if update thread context was closed at some point 2022-01-26 12:32:34 +09:00