1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-09 19:42:59 +08:00
Commit Graph

1616 Commits

Author SHA1 Message Date
Dan Balasescu
53f0befc05
Merge pull request #30402 from peppy/import-paused-visibility
Update notification text when import is paused due to gameplay
2024-11-20 16:00:13 +09:00
Dean Herbert
ebc2cc3570
Ensure cleanup tasks are run even on a cancelled / exceptioned import task 2024-11-18 16:51:46 +09:00
Dean Herbert
2afd357901
Re-throw OperationCanceledException for consistency?
Mostly to see if it breaks anything.
2024-11-14 13:14:35 +09:00
OliBomby
b6eff38520 Fix timing point truncation in legacy beatmap export 2024-11-13 14:23:28 +01:00
Dean Herbert
ce86208e09
Merge branch 'master' into import-paused-visibility 2024-11-12 17:02:21 +09:00
Dan Balasescu
bd630c189e
Fix tests not working by forgoing beatmap updates 2024-11-07 17:26:10 +09:00
Bartłomiej Dach
0e52797f29
Prefer not deleted models when picking model instances for reuse when importing
This fell out while investigating why the issue with online IDs
mismatching in the `.osu` could be worked around by importing the map
three times in total when starting from it not being available locally.

Here follows an explanation of why that "helped".

Import 1:
- The beatmap set is imported normally.
- Online metadata population sees the online ID mismatch and resets it
  on the problematic beatmap.

Import 2:
- The existing beatmap set is found, but deemed not reusable
  because of the single beatmap having its ID reset to -1.
- The existing beatmap set is marked deleted, and all the IDs of
  its beatmaps are reset to -1.
- The beatmap set is reimported afresh.
- Online metadata population still sees the online ID mismatch
  and resets it on the problematic beatmap.

Note that at this point the first import *is still physically present
in the database* but marked deleted.

Import 3:
- When trying to find the existing beatmap set to see if it can be
  reused, *the one pending deletion and with its IDs reset -
  - the remnant from import 1 - is returned*.
- Because of this, `validateOnlineIds()` resets online IDs
  *on the model representing the current reimport*.
- The beatmap set is reimported yet again.
- With the online ID reset, the online metadata population check for
  online ID mismatch does not run because *the IDs were reset to -1*
  earlier.

Preferring undeleted models when picking the model instance for reuse
prevents this scenario.
2024-10-30 08:18:44 +01:00
Dean Herbert
61f0cfd688
Make flow more async to avoid any chance of deadlocks 2024-10-24 17:56:51 +09:00
Dean Herbert
be5cb209e5
Update notification text when import is paused due to gameplay
Addresses https://github.com/ppy/osu/discussions/30388.
2024-10-23 17:51:29 +09:00
Dean Herbert
6ea1623889
Merge branch 'master' into lookup-users-endpoint 2024-10-22 18:48:00 +09:00
Dean Herbert
cbaee98674
Don't delete scores when deleting beatmaps
The score model's spec allows for null `BeatmapInfo` so the reasoning of
the inline comment is no longer valid. We match based on hash these
days.
2024-10-22 01:39:05 +09:00
Bartłomiej Dach
f8a13b0beb
Fix migration not checking combination properly 2024-10-16 08:17:22 +02:00
Leander Furumo
035e5a9613
migrate clearance of conflicting ToggleFPSDisplay keybind 2024-10-14 16:03:29 +02:00
Dean Herbert
d836dba982
Rename and xmldoc RealmResetEmptySet 2024-10-09 14:18:34 +09:00
Bartłomiej Dach
b811b9baf6
Fix DetachedBeatmapStore special condition for detecting resets from blocking all operations failing on empty databases
See https://discord.com/channels/188630481301012481/188630652340404224/1293309912591368244.
2024-10-08 23:16:17 +02:00
Bartłomiej Dach
17bc5ce5a9
Use lookup request in user lookup cache
Doing this alleviates https://github.com/ppy/osu/issues/29982, as the
currently online display utilises the user lookup cache, and currently
is hitting rate limits due to the amount of data retrieved from the `GET
/users` endpoint. Switching to `GET /users/lookup` reduces the chance of
this happening.
2024-10-08 14:05:27 +02:00
Dean Herbert
8773c34fdd
Rename enum to non-plural now that it won't conflict 2024-10-01 19:55:46 +09:00
Dean Herbert
ad3007eaad
Adjust ILocalUserPlayInfo to expose whether gameplay is in a paused/break state 2024-10-01 17:53:46 +09:00
Dean Herbert
562a5006ea
Change log output to only output when matches are found (in line with other methods) 2024-09-14 02:19:52 +09:00
Bartłomiej Dach
a4f6d4a300
Backpopulate missing ranked/submitted dates using new local metadata cache
People keep asking why https://github.com/ppy/osu/pull/29553 didn't fix
their databases (as stated in the PR, it didn't intend to), so this
should do it for them.
2024-09-13 16:00:49 +02:00
Dean Herbert
36a30cf077
Add note about using hard links in the future 2024-09-06 16:01:47 +09:00
Dean Herbert
de208fd5c3
Add very basic error handling for failed beatmap detach 2024-08-30 18:50:03 +09:00
Dean Herbert
2033a5e157
Add disposal of ManualResetEventSlim 2024-08-30 18:50:02 +09:00
Dean Herbert
d1d2591b67
Fix realm changes being applied before detach finishes 2024-08-29 18:42:43 +09:00
Dean Herbert
9123d2cb7f
Fix multiple test failures 2024-08-28 23:28:43 +09:00
Dean Herbert
c2c1dccf2d
Detach beatmap sets asynchronously 2024-08-28 19:13:49 +09:00
Dean Herbert
081c9eb21b
Fix incorrect cancellation / disposal handling of DetachedBeatmapStore 2024-08-28 17:21:19 +09:00
Dean Herbert
4d42274771
Use bindable list implementation 2024-08-28 16:03:37 +09:00
Dean Herbert
466ed5de78
Add basic detached beatmap store 2024-08-28 16:03:37 +09:00
clayton
8e63c17536
Apply CodeFactor lint 2024-08-07 15:02:53 -07:00
clayton
93e193d719
Add realm migration to remap key bindings 2024-08-07 14:36:04 -07:00
Bartłomiej Dach
7ba1f142e5
Fix rank upgrade path upgrading scores that failed background reprocessing earlier 2024-07-16 14:04:51 +02:00
Dean Herbert
6cee0210c3
Fix(?) xmldoc 2024-07-10 19:22:49 +09:00
Dean Herbert
704e7e843f
More xmldoc across new methods and classes 2024-07-10 18:34:48 +09:00
Dean Herbert
d3c66e2404
Add basic flow for mounting beatmaps for external editing 2024-07-10 18:29:51 +09:00
Dean Herbert
ee9e329db3
Inhibit original callback from firing when sending initial changeset 2024-07-09 16:05:58 +09:00
Dean Herbert
2423bbb776
Ensure realm subscriptions always fire initial callback with null ChangeSet
We expect this to be the case, but it turns out that it [may be
coalesced](https://www.mongodb.com/docs/realm-sdks/dotnet/latest/reference/Realms.IRealmCollection-1.html#Realms_IRealmCollection_1_SubscribeForNotifications_Realms_NotificationCallbackDelegate__0__Realms_KeyPathsCollection_):

> Notifications are delivered via the standard event loop, and so can't
> be delivered while the event loop is blocked by other activity. When
> notifications can't be delivered instantly, multiple notifications may
> be coalesced into a single notification. This can include the
> notification with the initial collection.

Rather than struggle with handling this locally every time, let's fix
the callback at our end to ensure we receive the initial null case.

I've raised concern for the API being a bit silly with realm
(https://github.com/realm/realm-dotnet/issues/3641).
2024-07-09 15:47:43 +09:00
Dean Herbert
5350945340
Update HasFlag usages 2024-07-03 00:19:04 +09:00
Dan Balasescu
276d8fe158
Truncate break times for legacy beatmap export 2024-06-26 16:20:56 +09:00
Bartłomiej Dach
daee363743
Merge branch 'master' into total-score-without-mods-once-more 2024-05-27 15:16:58 +02:00
Dean Herbert
d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
This reverts commit d7d569cf4e.
2024-05-22 16:29:39 +08:00
Bartłomiej Dach
45fcbea182
Compute total score without mods during standardised score conversion
This is going to be used by server-side flows. Note that the server-side
overload of `UpdateFromLegacy()` was not calling
`LegacyScoreDecoder.PopulateTotalScoreWithoutMods()`.

Computing the score without mods inline reduces reflection overheads
from constructing mod instances, which feels pretty important for
server-side flows.

There is one weird kink in the treatment of stable scores with score V2
active - they get the *legacy* multipliers unapplied for them because
that made the most sense. For all intents and purposes this matters
mostly for client-side replays with score V2. I'm not sure whether
scores with SV2 ever make it to submission in stable.

There may be minute differences in converted score due to rounding
shenanigans but I don't think it's worth doing a reverify for this.
2024-05-21 13:11:08 +02:00
Dean Herbert
d7d569cf4e
Temporary rollback of framework / SDL3 2024-05-21 14:36:16 +08:00
Bartłomiej Dach
be642c8c42
Fix total score without mods migration failing on custom ruleset scores when custom ruleset cannot be loaded
Closes https://github.com/ppy/osu/issues/28209.

Yes this means that such scores will have a zero total score without
mods in DB and thus might up getting their total recalculated to zero
when we try a mod multiplier rebalance (unless we skip scores with zero
completely I suppose). I also don't really care about that right now.
2024-05-19 09:43:33 +02:00
Salman Ahmed
4cf6ab40f6 Use MustDisposeResource annotation to appease ReSharper inspections 2024-05-11 22:33:18 +03:00
Bartłomiej Dach
c9414da5d4
Merge branch 'master' into pre-mod-multiplier-score 2024-05-08 13:39:44 +02:00
Bartłomiej Dach
82d1ebbd20
Merge branch 'master' into fix-zip-encoding 2024-04-30 16:30:15 +02:00
Dean Herbert
6a7e2dc258
Fix formatting 2024-04-30 21:47:03 +08:00
Dean Herbert
a3213fc36d
Change .olz to use UTF-8 encoding 2024-04-30 21:40:04 +08:00
Dean Herbert
0bfad74907
Move realm error handling to avoid triggering in test scenarios 2024-04-30 14:09:29 +08:00