1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-07 07:27:25 +08:00
Commit Graph

1361 Commits

Author SHA1 Message Date
cdwcgt
6900d0120a
change abstract implement 2022-12-15 21:39:48 +09:00
Dean Herbert
6bf1477939
Fix some hard links not being created due to missing directory structure
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-12-15 14:17:28 +09:00
Dean Herbert
b8904fe747 Move ImportParameters to better home 2022-12-13 21:41:26 +09:00
Dean Herbert
cb16d62700 Hook up ImportParameter flow with IModelImporter caller methods 2022-12-13 21:29:32 +09:00
Dean Herbert
6bb612ce69 Move hard link availability check to helper class 2022-12-13 20:20:42 +09:00
Dean Herbert
bbf931c746 Move hard link helper functions to their own class 2022-12-13 19:55:18 +09:00
Dean Herbert
1d4230993d Hook up parameter with RealmFileStore to complete the chain 2022-12-13 19:55:18 +09:00
Dean Herbert
cf2719d4c0 Convert batchImport parameter to parameters class to allow further import configuration 2022-12-13 19:55:18 +09:00
Dean Herbert
d8de99bbe4 Check for hard link support in first run overlay 2022-12-12 13:44:09 +09:00
Dean Herbert
3b1920c060 Add code to check whether a file is a hard link 2022-12-12 13:44:09 +09:00
Dean Herbert
f27603dd6d Use hard links instead of file copy when available 2022-12-12 13:44:09 +09:00
cdwcgt
e02b8cb199
Group export methods into their respective managers 2022-12-11 18:30:24 +09:00
cdwcgt
a87bcccc42
xmldoc 2022-12-11 17:00:53 +09:00
cdwcgt
2d57633409
rename method name and add xmldoc 2022-12-11 17:00:52 +09:00
cdwcgt
fa30f3348f
onComplete should private 2022-12-11 17:00:51 +09:00
cdwcgt
951302fe61
ExportAsync use TModel 2022-12-10 00:43:03 +09:00
cdwcgt
405985ec5b
remove Component
exportStorage to private
notification should post when export instead of class being constructed
2022-12-09 23:57:03 +09:00
cdwcgt
19afce6776
Fix overwriting existing files
https://github.com/ppy/osu/pull/21468
2022-12-09 23:41:07 +09:00
cdwcgt
a1fc33668c
Merge branch 'master' into export 2022-12-09 23:40:26 +09:00
Dean Herbert
819fd5f950 Fix incorrect resolution of GameHost in LegacyImportManager 2022-12-07 17:53:14 +09:00
Piggey
75cf7bd1d2 change GetNextBestFilename()'s parameters 2022-12-01 18:44:02 +01:00
Piggey
8f59aad91c unnecessary includes 2022-11-30 18:37:50 +01:00
Piggey
8b856f1c89 make LegacyExporter use NamingUtils.GetNextBestFilename() 2022-11-30 18:32:53 +01:00
Piggey
b99ddc2acf use .Select() to trim the file extension from filename 2022-11-30 15:36:08 +01:00
Piggey
660ad913ec oh wait this affects all of the legacy exporters 2022-11-30 11:06:44 +01:00
Dawid Sośnia
f0b8b53e81
Merge branch 'ppy:master' into fix-exported-replay-overwrite 2022-11-30 10:54:12 +01:00
Piggey
5e74c4e3b7 override LegacyScoreExporter.Export() to not overwrite files 2022-11-30 10:52:41 +01:00
Piggey
f5d85f5774 make ExportStorage protected 2022-11-30 10:51:42 +01:00
cdwcgt
6adac853e8
Spite sync method ExportToStream
`uuid` to `model`
2022-11-27 09:58:54 +09:00
Dan Balasescu
7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
cdwcgt
162f0bb95e
filename can be private 2022-11-21 19:06:04 +09:00
cdwcgt
564f136945
add xmldoc 2022-11-21 19:04:05 +09:00
cdwcgt
9c6421a462
log the error 2022-11-21 19:00:10 +09:00
cdwcgt
e37d30a373
refactor based on reviews
removed LegacyExportManager

Separated the method of CreateZip method and the default export method
2022-11-21 18:58:01 +09:00
cdwcgt
ed53168267
typo fix 2022-11-21 17:42:11 +09:00
cdwcgt
60ef88844c
Recover accidentally deleted codes 2022-11-21 17:09:56 +09:00
cdwcgt
2653bd2f99
Make notification cannot cancel when Saving Zip Archive
This operation cannot be stopped(if not dispose stream).
so make it cannot cancel
2022-11-19 12:57:56 +09:00
cdwcgt
28867fbbb1
Add comment 2022-11-19 12:34:35 +09:00
cdwcgt
fc4a6cb125
working with test 2022-11-19 01:02:35 +09:00
cdwcgt
4b29941b47
add LegacyExportManager 2022-11-18 20:00:00 +09:00
Dan Balasescu
5ceb7ecc41
Remove unused using 2022-11-17 13:56:27 +09:00
Dean Herbert
1050d7da34 Use more generic exception type (issue reported AggegateException) 2022-11-17 13:36:16 +09:00
Dean Herbert
adab9f0e48 Catch and gracefully handle file/directory enumeration failures during stable import
Closes https://github.com/ppy/osu/issues/21214.
2022-11-17 13:34:42 +09:00
cdwcgt
e1a21e0cf9
create a task to export to avoid block main thread
Code quality and remove some #nullable disable
2022-11-17 01:08:06 +09:00
Bartłomiej Dach
f775741d65
Merge branch 'master' into fix-filename-char-filtering 2022-10-29 12:42:10 +02:00
Dean Herbert
66ed77ac91 Rename and add documentation to function 2022-10-28 18:04:28 +09:00
Dean Herbert
42eafe318c Remove various simple obsoletions 2022-10-28 13:20:58 +09:00
Dan Balasescu
3ac3c33cc3
Merge pull request #20712 from peppy/reduce-import-transaction-scope
Reduce the scope of realm transactions during import operations
2022-10-12 16:56:21 +09:00
Dean Herbert
390ff8b9da Reduce the scope of realm transactions during import operations 2022-10-11 21:58:28 +09:00
Dean Herbert
a44ba579c5 Fix beatmap update button not respecting user "prefer no video" setting
Closes #20701.
2022-10-11 14:27:40 +09:00
Dean Herbert
64ee210825 Add realm migration to update skin names 2022-09-18 00:12:43 +09:00
Dan Balasescu
e95983cdb4
Merge branch 'master' into fix-skin-flow 2022-09-16 20:15:51 +09:00
Dean Herbert
581a4d2d6d Use APIBeatmap for realm migration requiring ShortName mapping 2022-09-15 16:58:58 +09:00
Dean Herbert
40a60f7145 Remove all entity framework code and migrations 2022-09-15 16:58:58 +09:00
Dean Herbert
9226f0abbc Implement equality correctly in Live 2022-09-13 19:16:25 +09:00
Dean Herbert
0fcd9e02f6 Fix skin dropdown not updating correctly when skin is changed externally 2022-09-13 14:01:40 +09:00
Dean Herbert
d561fcb126 Don't trigger fling animation when Close is triggered by non-user action 2022-09-12 16:54:25 +09:00
Dan Balasescu
8cbd344330 Improve performance when cancelling import with debugger attached 2022-09-05 11:28:13 +09:00
Dean Herbert
09aa3e065d Move colouring to full icon content rather than background 2022-08-30 18:06:48 +09:00
Dean Herbert
b8fda1a16f Apply NRT to notification classes
and tidy things up a bit.
2022-08-30 15:57:10 +09:00
its5Q
0cc6a76c17 Fix crash with legacy import from incomplete installs 2022-08-28 14:13:38 +10:00
Dan Balasescu
d947a6cb59 Add Realm migration 2022-08-24 17:28:41 +09:00
Dean Herbert
e1e6be039a Don't create destination stream if backup source doesn't exist 2022-08-17 18:20:47 +09:00
Dean Herbert
fca076b988 Fix edge case of realm backup cascading failure 2022-08-17 17:17:22 +09:00
Dan Balasescu
e689d4be96
Merge pull request #19530 from peppy/store-modified-time
Add `BeatmapInfo.LastUpdate` to track the time of local changes
2022-08-16 20:20:41 +09:00
Dean Herbert
1a7ddc0040 Fix re-importing existing collections not correctly adding new items 2022-08-16 16:43:05 +09:00
Dean Herbert
11f38e539f Rename property to LastLocalUpdate 2022-08-16 16:01:19 +09:00
Dean Herbert
c7db4a532c Merge branch 'master' into store-modified-time 2022-08-16 15:53:51 +09:00
Dan Balasescu
98c7138803
Merge pull request #19586 from peppy/realm-versioning-for-debug
Version realm files for debug executions
2022-08-10 21:17:51 +09:00
Dan Balasescu
f9c6dc314b
Merge pull request #19678 from peppy/fix-file-comparisons-many-places
Fix audio track not correctly advancing when changing between certain beatmaps
2022-08-10 20:38:14 +09:00
Dan Balasescu
69cbf4185b Match class name to file 2022-08-10 19:53:40 +09:00
Dean Herbert
ac99c1ad69 Migrate the majority of existing file lookups to use new extension methods 2022-08-10 16:01:16 +09:00
Dean Herbert
ddffa9b1bd Fix crash when attempting to import on mobile platforms
Regressed with NRT application to this file. It's probably the first
time we've actually hit this due to an optional DI that is actually not
available outside of tests.
2022-08-10 15:32:43 +09:00
Dean Herbert
6459dbd9e5 Fix collection import not showing progress notification 2022-08-08 14:56:16 +09:00
Dean Herbert
c31e257a1f Clean up pending deletion presets on startup 2022-08-07 15:16:33 +09:00
Dean Herbert
4544df5978 Leave client.realm around to handle pull requests without this change merged 2022-08-05 18:27:29 +09:00
Dean Herbert
ad3d00b1dc Don't add version suffixes when running unit tests 2022-08-05 18:23:41 +09:00
Dean Herbert
3c84b1a389 Change order of application to use original client.realm last 2022-08-05 17:48:51 +09:00
Dean Herbert
84a3fbd25c Version realm files for debug executions
To make it easier for developers to test out pull requests which bump
the realm schema version, realm files are now stored with the schema
version in the filename.

Note that this means any changes made to a newer version will not be
applied to previous ones.
2022-08-05 17:36:49 +09:00
Dean Herbert
d3954fc583 Use existing localised error message 2022-08-03 20:15:46 +09:00
Salman Ahmed
7354f9e6ba Remove localisation for now 2022-08-01 22:05:52 +03:00
Dean Herbert
d7a06abcab Add BeatmapInfo.LastUpdate to track the time of local changes 2022-08-02 00:53:07 +09:00
Salman Ahmed
3ff0327d91 Display readable message when reaching download limit 2022-08-01 14:22:54 +03:00
Bartłomiej Dach
345f103119
Migrate mod preset column to use realm 2022-07-31 23:53:45 +02:00
Dean Herbert
6ad86ce5b7 Run collection import process asynchronously
Actually required to avoid deadlocking..
2022-07-31 01:06:57 +09:00
Dean Herbert
80ffa2cf20 Move collection database rather than deleting post-migration for safety 2022-07-31 00:54:00 +09:00
Dean Herbert
8e06d55960 Fix collection migration incorrectly running asynchronously 2022-07-31 00:53:39 +09:00
Dean Herbert
cb52b696ed
Merge branch 'master' into bypass-local-metadata-cache 2022-07-29 16:05:54 +09:00
Dean Herbert
c35da62224 Add flow for bypassing local cache lookups when refreshing beatmap metadata 2022-07-28 16:33:51 +09:00
Dean Herbert
2209afd0e8 Mark Live methods as InstantHandleAttribute 2022-07-28 15:03:08 +09:00
Dean Herbert
1669208a54 Add migration of existing collections database 2022-07-28 13:57:21 +09:00
Dean Herbert
41393616d8 Replace BeatmapCollection with RealmBeatmapCollection 2022-07-27 19:35:09 +09:00
Dean Herbert
9c543fef48 Remove CollectionManager 2022-07-27 18:45:33 +09:00
Dean Herbert
6b73f7c7ec Split out legacy import path from realm manager 2022-07-27 15:04:09 +09:00
Dean Herbert
9173271900 Fix new update pathway not actually being used 2022-07-26 17:58:09 +09:00
Dean Herbert
8370ca9765 Add ImportAsUpdate method to IModelImporter to avoid otehr changes 2022-07-26 15:49:04 +09:00
Dean Herbert
8a0c8f5fd8 Fix some realm pieces not being cleaned up 2022-07-25 19:51:19 +09:00
Dean Herbert
2e14d8730c Move implementation of updating a beatmap to BeatmapImporter 2022-07-25 19:51:19 +09:00
Dean Herbert
b7f6413bce Fix old version of beatmap potentially not being deleted during update flow
This can happen if the online IDs are not present in the `.osu` files.
Previously this was only working due to the early logic in the import
process (that relies on matching all online IDs perfectly).
2022-07-25 19:51:19 +09:00
Dean Herbert
94cd641fb4 Change migration to trigger reprocessing on every local beatmap
Was originally relying on the fact that this would be triggered due to a
null `LastOnlineUpdate`, but wouldn't cover the case of beatmaps with no
`OnlineID`.
2022-07-21 18:31:12 +09:00
Dean Herbert
d5e0dba9da Change default value of StarRating to -1 2022-07-21 18:20:46 +09:00
Dean Herbert
68f28ff660 Add last applied version to RulesetInfo 2022-07-21 18:15:25 +09:00
Dan Balasescu
2b399ec7ad
Merge branch 'master' into date-submitted-ranked 2022-07-20 18:36:57 +09:00
Dean Herbert
6357223341 Fix incorrect DI fetch and apply nullability to ModelDownloader 2022-07-19 20:06:34 +09:00
Dean Herbert
30daa0fd44 Add ranked and submitted date storage and filtering 2022-07-19 19:55:56 +09:00
Dean Herbert
17046b0553 Add basic handling of download failures 2022-07-19 19:01:23 +09:00
Dean Herbert
6ea380d649 Add new properties to BeatmapInfo to track online hash and updates 2022-07-19 17:57:01 +09:00
Dean Herbert
51f91fe62e Update naming 2022-07-18 16:17:20 +09:00
Salman Ahmed
4e7156cee8 Store user country on databased scores 2022-07-16 06:39:05 +03:00
Dean Herbert
c8c79d2185 Standardise HasReplay implementation (and remove from persisting to realm) 2022-07-15 16:14:21 +09:00
Dean Herbert
8820ea4006 Add last played date to BeatmapInfo 2022-07-13 16:36:43 +09:00
Dean Herbert
8b6665cb5b Ensure initial beatmap processing is done inside the import transaction 2022-07-11 02:51:54 +09:00
Dan Balasescu
0bc332e90b
Merge pull request #19029 from peppy/fix-skin-import-duplicate
Fix skins potentially being duplicated on batch import
2022-07-08 14:18:14 +09:00
Dean Herbert
c53dd4a703 Fix editor saving not updating BeatmapSetInfo's hash 2022-07-08 02:33:14 +09:00
Dean Herbert
cf1da1dd18 Fix skins potentially being duplicated on batch import
Resolves https://github.com/ppy/osu/discussions/19024#discussioncomment-3099200
2022-07-07 22:39:07 +09:00
Dean Herbert
ac216d94a8 Fix transaction not being disposed 2022-07-07 18:15:38 +09:00
Dean Herbert
5197d0fa9e Add automatic transaction handling to realm helper methods 2022-07-07 17:36:25 +09:00
Dean Herbert
a1b6ec60c8 Add statistics display for MemoryCachingComponents
Never sure if these are working as they should (or how well they are
working). This helps quite a bit.
2022-07-06 18:38:40 +09:00
Dean Herbert
33db508301 Add note regarding why the realmRetrievalLock return is done on the async thread 2022-07-05 16:23:10 +09:00
Dean Herbert
5adec2c738 Ensure blocking restoration only completes after update callback work is completed 2022-07-05 14:39:14 +09:00
Dean Herbert
1b98936328 Rename realm ThreadLocal to better convey what it's doing
Every time I looked at this code I have to re-learn what it's doing.
Changing these variable names should help quite a bit.
2022-07-05 13:38:25 +09:00
Dean Herbert
506409a9c4 Fix realm backup creation failing when run from RealmAccess constructor
At the point of construction, we are not on the update thread, but it
doesn't really matter at this point because there's no other usages.
2022-07-04 16:45:23 +09:00
Salman Ahmed
e28ee8bc7a Count time spent upwards to display attempts correctly 2022-07-02 10:46:52 +03:00
Dean Herbert
93809a92d4 Fix clashing error messaging during realm block operations 2022-07-02 16:30:04 +09:00
Dean Herbert
4fd47b5fa0 Add more verbose logging to realm blocking process 2022-07-02 12:36:56 +09:00
Dan Balasescu
3b1842a2c2
Merge pull request #18835 from peppy/beatmap-update-flow
Split out beatmap update tasks to `BeatmapUpdater` and invoke from editor save flow
2022-07-01 20:28:04 +09:00
Dean Herbert
447b496eff
Merge branch 'master' into realm-fix-async-write-after-disposal 2022-06-30 19:07:15 +09:00
Dean Herbert
2a73210865 Add xmldoc and update parameter naming for MemoryCachingComponent.Invalidate flow 2022-06-30 17:17:06 +09:00
Dean Herbert
98938821e5 Merge branch 'master' into beatmap-update-flow 2022-06-30 16:44:17 +09:00
Dean Herbert
78d86fd3ff Fix PerformWrite not rolling back transaction on exception 2022-06-30 15:15:09 +09:00
Dean Herbert
7cb4e32c17 Add one more lock to appease CI 2022-06-29 22:45:19 +09:00
Dean Herbert
a3b4a515fc Merge branch 'master' into realm-fix-async-write-after-disposal 2022-06-29 22:39:05 +09:00
Dean Herbert
32af4e41ea Add back thread safety and locking as required 2022-06-29 20:56:01 +09:00
Dean Herbert
ecdb30d215 Fix one more case of collection modification during enumeration
https://sentry.ppy.sh/share/issue/a61c27b2a63a4a6aa80e75873f9d87ca/
2022-06-29 02:28:23 +09:00
Dean Herbert
e10ac45fd7 Remove probably redundant realmLock
As far as I can tell all accesses are safe due to update thread
guarantees. The only weird one may be async writes during a
`BlockAllOperations`, but the `Compact` loop should handle this quite
amicably.
2022-06-28 16:55:54 +09:00
Dan Balasescu
396e7fc166
Merge pull request #18862 from peppy/empty-beatmap-file-fix-2
Fix second case of empty beatmaps being reported to sentry as errors
2022-06-27 20:37:57 +09:00
Dean Herbert
f355c3a3c9
Merge pull request #18864 from peppy/fix-realm-audio-track-test-fail
Centralise and harden editor-ready-for-use check
2022-06-27 19:42:49 +09:00
Dean Herbert
83982d258d Throw immediately if attempting to WriteAsync after disposed 2022-06-27 19:34:28 +09:00
Dean Herbert
c39c99bd43 Ensure all async writes are completed before realm is disposed 2022-06-27 19:21:05 +09:00
Dean Herbert
f6a61472c4 Fix occasional failure in realm test proceedings due to incorrect Debug.Assert
After a `BlockAllOperations`, the restoration of the `updateRealm`
instance is not instance. It is posted to a `SynchronizationContext`.
The assertion which has been removed in this commit was assuming it
would always be an immediate operation.

To ensure this works as expected, I've tracked the initialised state via
a new `bool`.

```csharp
System.TimeoutException : Attempting to block for migration took too long.

  1) Host threw exception System.AggregateException: One or more errors occurred. (: )
 ---> NUnit.Framework.AssertionException: :
   at osu.Framework.Logging.ThrowingTraceListener.Fail(String message1, String message2)
   at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
   at System.Diagnostics.TraceInternal.TraceProvider.Fail(String message, String detailMessage)
   at System.Diagnostics.Debug.Fail(String message, String detailMessage)
   at osu.Game.Database.RealmAccess.BlockAllOperations() in /opt/buildagent/work/ecd860037212ac52/osu.Game/Database/RealmAccess.cs:line 813
   at osu.Game.OsuGameBase.<>c__DisplayClass108_1.<Migrate>b__0() in /opt/buildagent/work/ecd860037212ac52/osu.Game/OsuGameBase.cs:line 449
   at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
   at osu.Framework.Threading.Scheduler.Update()
   at osu.Framework.Graphics.Drawable.UpdateSubTree()
   at osu.Framework.Graphics.Containers.CompositeDrawable.UpdateSubTree()
```

https://teamcity.ppy.sh/buildConfiguration/Osu_Build/322?hideProblemsFromDependencies=false&hideTestsFromDependencies=false&expandBuildTestsSection=true
2022-06-27 18:01:12 +09:00
Dean Herbert
01487a1185 Add assertion on realm re-fetch being not-null 2022-06-27 15:52:45 +09:00
Dean Herbert
da61d0547f Include archive name in import log output 2022-06-27 15:24:25 +09:00
Dean Herbert
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
Dean Herbert
30b3973c9f Difficulty cache invalidation flow 2022-06-24 21:02:38 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}() 2022-06-24 11:57:45 +02:00
Dean Herbert
51268d0cc8 Throw on Wait failure in a few remaining cases 2022-06-23 15:28:21 +09:00
Dean Herbert
7ef8b7df5f Add timeout for all ManualResetEventSlim.Wait invocations
Timeout values were taken as best-guesses of upper values we'd expect
from sane execution.
2022-06-23 14:46:00 +09:00
Dean Herbert
948c28f415 Fix collection modified during BlockAllOperations if any subscriptions have been established 2022-06-22 20:34:05 +09:00
Dan Balasescu
816fd338cb
Fix typo 2022-06-21 19:57:27 +09:00
Dean Herbert
f74b4ac277 Fix blocking overhead when calling WriteAsync 2022-06-21 17:15:25 +09:00