Dean Herbert
68db112882
Re-date migration
2023-08-16 16:20:17 +09:00
Dean Herbert
6e11162ab1
Add helper method for safer realm Find<T>
2023-08-16 15:37:09 +09:00
Bartłomiej Dach
88295a49aa
Fix invalid reference in xmldoc
2023-08-16 07:38:31 +02:00
Bartłomiej Dach
6c4c76350f
Remove unused using directive
2023-08-16 07:36:56 +02:00
Dean Herbert
531794b26b
Fix ModelManager
not correctly re-retrieving realm objects before performing operations
...
Falls into the age-old trap of attempting to retrieve an item from realm
without first ensuring that realm is in an up-to-date state.
Consider this scenario:
- Editor is entered from main menu, causing it to create a new beatmap
from its async `load()` method.
- Editor opens correctly, then main thread performs a file operations on
the same beatmap.
- Main thread is potentially not refreshed yet, and will result in `null`
instance when performing the re-fetch in `performFileOperation`.
I've fixed this by using the safe implementation inside `RealmLive<T>`.
Feels like we want this is one place which is always used as the correct
method.
On a quick search, there are 10-20 other usages of `Realm.Find<T>` which
could also have similar issues, but it'll be a bit of a pain to go
through and fix each of these. In 99.9% of cases, the accesses are on
instances which couldn't have just been created (or the usage of
recently-imported/created is blocked by realm subscription flows, ie.
baetmap import) so I'm not touching them for now.
Something to keep in mind when working with realm going forward though.
2023-08-16 14:23:32 +09:00
Dean Herbert
502844a858
Add ability to construct RealmLive
from ID
2023-08-16 14:23:01 +09:00
QuantumSno
a0543d97bd
Merge branch 'master' into leaderboard-toggle
2023-08-12 11:21:02 -04:00
Bartłomiej Dach
253392409e
Fix LegacyBeatmapExporter
not converting beatmap between decode and re-encode
2023-08-12 00:50:31 +02:00
Bartłomiej Dach
2b738edb93
Reword / fix comments
2023-08-10 22:55:02 +02:00
QuantumSno
71c42167e7
Updated wording on realm comments
2023-08-10 10:17:12 -04:00
QuantumSno
5443f89dca
Assuming its still set to tab, removes binding for toggle chat so itll be set to the new default
2023-08-01 16:58:52 -04:00
QuantumSno
426bc52fd5
Updated schema_version number and added braces around some migration cases to help with re-using variable names
2023-08-01 14:27:37 -04:00
Dean Herbert
30baac0f3d
Avoid reprocessing scores which already failed an upgrade previously
...
Closes https://github.com/ppy/osu/issues/24301 .
2023-07-26 16:22:10 +09:00
OliBomby
e7a9175aea
fix skin using wrong stream
2023-07-18 13:08:05 +02:00
OliBomby
63dd8bd991
use base.GetFileContents to get file stream
2023-07-18 12:40:48 +02:00
OliBomby
bcdf531039
truncate end time before start time
2023-07-18 12:28:35 +02:00
OliBomby
5d82190b70
Merge remote-tracking branch 'upstream/master' into legacy-export
2023-07-18 12:18:49 +02:00
OliBomby
c02684d985
truncate hit object end time
2023-07-18 12:18:43 +02:00
Dean Herbert
480259b8d2
Ensure migration is never run on scores with new-enough TotalScoreVersion
s
2023-07-14 20:02:25 +09:00
OliBomby
1d837a8725
Move all conversion code to LegacyBeatmapExporter
2023-07-13 00:20:01 +02:00
OliBomby
3052c317e1
change .osz2 to .olz (osu lazer zip)
2023-07-12 15:04:06 +02:00
OliBomby
465cc759f0
Add xmldoc to clarify the purpose of BeatmapExporter
2023-07-12 14:49:49 +02:00
OliBomby
b577b6b6ae
Export legacy converted beatmaps as .osz and non-converted beatmaps as .osz2
2023-07-11 21:04:09 +02:00
OliBomby
2db25722cb
It works now
2023-07-11 20:18:54 +02:00
OliBomby
06e5ef88c0
legacy export broken
2023-07-11 02:30:16 +02:00
Bartłomiej Dach
9e4ffc8c12
Split helper method for populations from replay
2023-07-10 21:10:01 +02:00
Bartłomiej Dach
e12255bbe5
Do not run legacy conversion with ScoreV2 mod present
2023-07-09 17:48:25 +02:00
Bartłomiej Dach
9377622cd4
Add backwards migration to populate ScoreV2 mod for already-imported scores
2023-07-09 17:48:24 +02:00
Dean Herbert
d72765b6f8
Merge pull request #24114 from peppy/editor-save-local-score-management
...
Ensure scores always have the correct linked `BeatmapInfo`
2023-07-07 15:40:54 +09:00
Dean Herbert
8978f2ddd8
Remove all usage of !something!.something
...
aka don't mix NRT forgiving syntax with not syntax
2023-07-07 10:15:33 +09:00
Bartłomiej Dach
1473abd909
Remove outdated xmldoc
2023-07-06 22:01:02 +02:00
Dean Herbert
a98a36872e
Bring realm library up-to-date
2023-07-06 13:37:43 +09:00
Dean Herbert
9ff6b3fcd3
Merge branch 'master' into editor-save-local-score-management
2023-07-06 12:28:44 +09:00
Dean Herbert
f2aa80f413
Rename and adjust xmldoc on TotalScoreVersion
2023-07-04 20:04:02 +09:00
Dean Herbert
aee89e5e4b
Rewrite comment regarding LegacyTotalScore
2023-07-04 19:59:57 +09:00
Dean Herbert
dd9998127e
Count missing beatmaps as errored items
2023-07-04 18:35:03 +09:00
Dean Herbert
a0c3fa9c13
Move preconditions to realm migration step to simplify marker version logic
2023-07-04 17:53:53 +09:00
Dean Herbert
1629024111
ILegacyScoreProcessor
-> ILegacyScoreSimulator
2023-07-04 17:32:54 +09:00
Dean Herbert
d74b1e148d
Make ScoreInfo.BeatmapInfo
nullable
2023-07-04 14:50:34 +09:00
Dean Herbert
67650831bd
Remove unnecessary null check
2023-07-04 14:19:25 +09:00
Dean Herbert
4203e2183d
Merge branch 'master' into diffcalc-total-scorev1
2023-07-04 14:15:24 +09:00
Dan Balasescu
c6ad184d94
Move Ruleset method to ILegacyRuleset interface
2023-06-29 17:24:37 +09:00
Dan Balasescu
ddd870e843
Make LegacyTotalScore nullable
2023-06-29 17:19:10 +09:00
Dan Balasescu
09bc8e45de
Refactoring
2023-06-28 16:14:32 +09:00
Dean Herbert
99e55bb9c0
Add logging and Debug.Fail
on detached beatmap detection
2023-06-28 12:21:05 +09:00
Dean Herbert
8e80e2fa32
Fix incorrect realm copy logic when a beatmap becomes detached from its set
...
The code here was assuming that if the beatmap which is having changes
copied across does not exist within the `BeatmapSet.Beatmaps` list, it
was not yet persisted to realm.
In some edge case, it can happen that the beatmap *is* persisted to
realm but not correctly attached to the beatmap set. I don't yet know
how this occurs, but it has caused loss of data for at least two users.
The fix here is to check realm-wide for the beatmap (using its primary
key) rather than only in the list. We then handle the scenario where the
beatmap needs to be reattached to the set as a seprate step.
---
This does raise others questions like "are we even structuring this
correctly? couldn't a single beatmap exist in two different sets?"
Maybe, but let's deal with that if/when it comes up.
2023-06-27 18:20:01 +09:00
Dan Balasescu
0c5c09597c
Store old total score as LegacyTotalScore
2023-06-27 14:59:40 +09:00
Dan Balasescu
8e79510793
Add migration for total score conversion
2023-06-26 21:53:21 +09:00
Dean Herbert
df5b389629
Manual fixes to reduce warnings to zero
2023-06-24 01:52:53 +09:00
Dean Herbert
0ab0c52ad5
Automated pass
2023-06-24 01:00:03 +09:00
Dean Herbert
1f17f416a4
Force migration of old-new standardised scores to run once more
2023-06-16 14:04:18 +09:00
Dean Herbert
94b7de4b3f
Fix old-new standardised score conversion missing some scores due to not rounding correctly
2023-06-16 14:01:56 +09:00
Bartłomiej Dach
51b5a0863f
Apply migration to new standardised score on normal reimport too
2023-06-15 21:53:15 +02:00
Dean Herbert
d83bf02923
Fix thing
2023-06-15 21:43:41 +02:00
Bartłomiej Dach
6205864c62
Fix score migration not considering mod multipliers
2023-06-13 19:00:13 +02:00
Dean Herbert
422e87f0ec
Fix weird usings
2023-06-13 05:30:12 +09:00
Dean Herbert
c1b0c60e79
Ensure all misses are dequeued
2023-06-13 05:24:04 +09:00
Dean Herbert
3304e41a30
Add more commenting
2023-06-13 05:20:29 +09:00
Dean Herbert
afb5a9243a
Fix typo
...
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2023-06-13 05:13:22 +09:00
Dean Herbert
e9fb1f8932
Avoid tracking hit events altogether during migration
2023-06-13 02:15:41 +09:00
Dean Herbert
385f6dbd84
Move local classes to their rightful location
2023-06-13 02:12:23 +09:00
Dean Herbert
87520ae400
Avoid overhead from retrieving MaxCombo
inside loop from realm
2023-06-13 02:05:00 +09:00
Dean Herbert
0916ae1671
Add basic profiling output of realm migrations
2023-06-13 01:57:41 +09:00
Dean Herbert
0e9576acfb
Remove logging and catch any kind of errors
2023-06-13 01:40:43 +09:00
Dean Herbert
d19f8997fc
Account for scores which don't have correct maximum statistics populated
2023-06-13 01:40:43 +09:00
Dean Herbert
f30c1a564f
Add basic setup for score migration
2023-06-13 01:40:43 +09:00
Bartłomiej Dach
11694f35fe
Apply NRT in MemoryCachingComponent
subclasses too
2023-06-09 13:47:35 +02:00
Dean Herbert
4685ba83e1
Apply NRT to MemoryCachingComponent
classes
2023-06-09 19:00:05 +09:00
Bartłomiej Dach
ca25ac446b
Be slightly more specific with error message
2023-06-09 11:20:12 +02:00
Dean Herbert
53f935714e
Inline binary reading to avoid polluting RealmAccess
with nested class
2023-06-09 17:34:27 +09:00
Dean Herbert
a9071e7afd
try-catch more
2023-06-09 17:33:59 +09:00
Dan Balasescu
67562a3856
Catch errors during score parsing
2023-06-09 14:35:29 +09:00
Dan Balasescu
facf7de053
Parse ScoreInfo.IsLegacyScore from replays
2023-06-08 21:38:10 +09:00
Bartłomiej Dach
1f4e79d79d
Merge pull request #23711 from timiimit/add-last-edit-time
...
Store timestamp of beatmap's last edit time in local database
2023-06-07 16:57:24 +02:00
Salman Ahmed
62cb6a98ca
Remove redundant nullable suppression directives
2023-06-07 08:20:41 +03:00
Dean Herbert
e0e013cca1
Fix incorrect realm schema comment
...
Co-authored-by: timiimit <32331609+timiimit@users.noreply.github.com>
2023-06-06 22:17:05 +09:00
Dean Herbert
878cdb2ed3
Bump schema version
2023-06-06 15:11:37 +09:00
Dean Herbert
18eb15bfa5
Gracefully handle failures in cleaning up pending file deletions
2023-05-31 19:39:43 +09:00
Bartłomiej Dach
2e81cae201
Move comment to more correct place
2023-05-30 23:18:34 +02:00
Dean Herbert
a0be526266
Adjust realm backup procedure to hard fail if running out of attempts
...
Previously, if the backup procedure failed, startup would continue and
the user's realm database may be deleted. I think in such a fail case
I'd rather the game didn't startup so the user gets in touch (or reads
the log files themselves) rather than potentially losing data.
2023-05-30 13:04:34 +09:00
Dean Herbert
79694897be
Ensure a potential exception from cleanupPendingDeletions
doesn't mark realm corrupt
...
The whole restructure here is to move the nested call out of the
`try-catch`. I noticed this while looking at a corrupt database issue a
user reported (https://github.com/ppy/osu/discussions/23694 ).
It's not the first time we've seen a corrupt database error where the
"corrupt" version works just fine on a second attempt.
Maybe this isn't the issue and it's just a transitive file access violation
but it definitely feels like this should be fixed regardless.
2023-05-30 13:00:17 +09:00
Dan Balasescu
d2380bd840
Remove usages of [ExcludeFromDynamicCompile]
2023-05-08 18:12:56 +09:00
Bartłomiej Dach
510484011c
Mark exporter extensions as untranslatable
2023-05-06 19:42:28 +02:00
Bartłomiej Dach
3f63fd7f4d
Reorder increment to make progress update less weird
2023-05-06 19:39:52 +02:00
Bartłomiej Dach
bb17b684b0
Rename flag
2023-05-06 19:38:41 +02:00
Bartłomiej Dach
a56a5d563c
Unify error message wording
2023-05-06 19:38:05 +02:00
Bartłomiej Dach
3afe198d1d
Remove weird single-use private method
2023-05-06 19:34:22 +02:00
Bartłomiej Dach
e0823ffd03
Move lower and xmldoc GetFilename(TModel)
2023-05-06 19:29:08 +02:00
Bartłomiej Dach
5e64d25b2a
Make UserFileStorage
readonly
again
2023-05-06 19:26:51 +02:00
Dean Herbert
64d7e0d896
Rename outputStream
variable to match base class
2023-05-07 00:24:30 +09:00
Dean Herbert
d2591368a6
More xmldoc fixes
2023-05-06 23:53:35 +09:00
Dean Herbert
0d095c4bb7
Remove non-Live
pathway
2023-05-06 23:10:18 +09:00
Dean Herbert
e75ff33d62
Remove redundant xmldoc and reword some remaining
2023-05-06 23:10:09 +09:00
cdwcgt
71864fbb93
remove meanless comment
2023-05-05 21:29:06 +09:00
cdwcgt
4393e53b43
ExportToStream should be public
2023-05-05 21:28:43 +09:00
Dean Herbert
747f912af5
Fix incorrect cancellation logic
2023-05-05 21:08:01 +09:00
Dean Herbert
5d78561aa3
Remove weird catch logic
2023-05-05 21:05:57 +09:00
Dean Herbert
2a3e03695c
Simplify ExportAsync
, remove weird dedupe logic and unnecessary return success
code
2023-05-05 21:05:52 +09:00
Dean Herbert
4ccfebc02b
Simplify ExportToStreamAsync
implementation
2023-05-05 21:01:10 +09:00
Dean Herbert
fc2d2de34c
Fix notification text not including export filename
2023-05-05 16:53:27 +09:00