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

1147 Commits

Author SHA1 Message Date
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
Dean Herbert
ba394f2831 Remove IPostsImports interface (and move to IModelImporter) 2022-06-20 18:53:48 +09:00
Dean Herbert
e732c5a2d7 Add PostImport method matching PreImport 2022-06-20 18:40:23 +09:00
Dean Herbert
45c5013f09 Remove default value of RealmArchiveModelImporter.HandledExtensions
Not used anywhere and probably not wanted ever.
2022-06-20 18:40:23 +09:00
Dean Herbert
dbae4c6f5a PostImport -> PresentImport 2022-06-20 18:36:29 +09:00
Dean Herbert
4aa32038c3 Add note about stream provided to ImportTask being disposed implicitly 2022-06-20 15:38:44 +09:00
Dean Herbert
882e1c69e5 Move nested task back outside try-catch to avoid double-error 2022-06-20 15:36:44 +09:00
Dean Herbert
678b18dde6 Ensure any non-MemoryStream streams are closed as part of ImportTask 2022-06-20 15:29:56 +09:00
Dean Herbert
dd93c7359e Update xmldoc for importFromArchive method 2022-06-20 15:25:43 +09:00
Dean Herbert
92f1a2958c Rename Import(TModel) to ImportModel to differentiate from other import methods 2022-06-20 15:18:07 +09:00
Dean Herbert
a6c8a832aa Remove Import(ArchiveReader) and redirect existing usages to Import(ImportTask) 2022-06-20 15:14:57 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Bartłomiej Dach
651862fee0
Merge branch 'master' into database-migration-reliability 2022-06-16 17:19:58 +02:00
Dean Herbert
bf6c6682bc Move null to finally 2022-06-16 23:37:24 +09:00
Dean Herbert
7809566f16 Add explanatory comments 2022-06-16 23:31:49 +09:00