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

52811 Commits

Author SHA1 Message Date
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
Dean Herbert
6203885040 Add test coverage of realm async writes 2022-06-27 19:38:14 +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
1fc4fa6820 Remove unnecessary Task.Run workaround in tests 2022-06-27 19:21:05 +09:00
Dan Balasescu
8f91ce8f0c
Merge pull request #18871 from peppy/fix-realm-assertion-during-tests
Fix occasional failure in realm test proceedings due to incorrect `Debug.Assert`
2022-06-27 18:48:47 +09:00
Dan Balasescu
e131101708
Merge pull request #18866 from peppy/fix-storyboard-outro-skip-test-flaky
Fix `TestStoryboardSkipOutro` occasionally failing due to strict timings
2022-06-27 18:33:02 +09:00
Dan Balasescu
b13fa924fd
Merge pull request #18865 from peppy/fix-flaky-chat-test
Fix chat tests failing 1/10000 runs
2022-06-27 18:06:00 +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
7ae222d984
Merge pull request #18863 from smoogipoo/difficulty-attributes-beatmap
Pass online beatmap info into `DifficultyAttributes.FromDatabaseAttributes()`
2022-06-27 17:16:52 +09:00
Dean Herbert
401d9c1bae Fix TestStoryboardSkipOutro occasionally failing due to strict timings 2022-06-27 17:13:46 +09:00
Dean Herbert
13dcaf82ad Fix chat tests failing 1/10000 runs
31a447fda0/osu.Game/Online/Chat/ChannelManager.cs (L412-L414)

Sigh.
2022-06-27 16:50:10 +09:00
Dan Balasescu
0fd2c010e5 Remove NRT disables from attributes classes 2022-06-27 16:07:15 +09:00
Dan Balasescu
0579780bb8 Add IBeatmapOnlineInfo parameter and use to extract more data 2022-06-27 16:07:15 +09:00
Dan Balasescu
f6a6538e96 Add more properties to IBeatmapOnlineInfo 2022-06-27 16:07:15 +09:00
Dan Balasescu
2b278ed324
Merge pull request #18841 from peppy/menu-cursor-better-rotation
Adjust menu cursor rotation to use a floating centre-point
2022-06-27 14:18:54 +09:00
Dan Balasescu
05148d2b98
Merge pull request #18854 from peppy/fix-flaky-editor-navigation-test
Attempt to fix flaky `EditorNavigation` test
2022-06-27 13:58:28 +09:00
Dan Balasescu
1c1016d0be
Merge pull request #18853 from peppy/fix-flaky-playlist-test
Attempt to fix flaky `PlaylistOverlay` test
2022-06-27 13:48:19 +09:00
Dean Herbert
b5a8889fb8 Attempt to fix flaky EditorNavigation test
Conditionals taken from
f8830c6850/osu.Game/Tests/Visual/EditorTestScene.cs (L61-L62)
where it seemed to resolve other similar cases.
2022-06-27 03:04:50 +09:00
Dean Herbert
cd9eaf215b Attempt to fix flaky PlaylistOverlay test 2022-06-27 02:58:01 +09:00
Dan Balasescu
0bd230217b
Merge pull request #18849 from peppy/fix-another-test-deadlock
Fix test deadlock due to TPL threadpool saturation
2022-06-26 17:37:15 +09:00
Dean Herbert
1a22377e19 Fix test deadlock due to TPL threadpool saturation
As found in aggressive CI runs:

```csharp
00007F6F527F32B0 00007f74f937c72d (MethodDesc 00007f74f5545a78 + 0x22d System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f51c0838 + 0 System.Threading.Monitor.Wait(System.Object, Int32))
00007F6F527F3330 00007f74f93861ca (MethodDesc 00007f74f5259100 + 0x10a System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5545a78 + 0 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken))
00007F6F527F3390 00007f74f9385d11 (MethodDesc 00007f74f52590e8 + 0x81 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)), calling (MethodDesc 00007f74f5259100 + 0 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken))
00007F6F527F33E0 00007f74fc3823af (MethodDesc 00007f74f5934c08 + 0x4f System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].GetResultCore(Boolean)), calling (MethodDesc 00007f74f52590e8 + 0 System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken))
00007F6F527F3400 00007f74fb0aad92 (MethodDesc 00007f74fb28b000 + 0x122 osu.Game.Tests.Visual.OnlinePlay.OnlinePlayTestScene+<>c__DisplayClass21_0.<Setup>b__1(osu.Game.Online.API.APIRequest)), calling (MethodDesc 00007f74f5934be8 + 0 System.Threading.Tasks.Task`1[[System.Boolean, System.Private.CoreLib]].get_Result())
00007F6F527F3470 00007f74fa9c6dd7 (MethodDesc 00007f74f921f6c8 + 0x77 osu.Game.Online.API.DummyAPIAccess.PerformAsync(osu.Game.Online.API.APIRequest))
00007F6F527F34C0 00007f74fb13c718 (MethodDesc 00007f74fb4e0c50 + 0x538 osu.Game.Database.OnlineLookupCache`3+<performLookup>d__13[[System.Int32, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]].MoveNext())
```

Going with the simplest solution, as what we had was pretty ugly to start with and I don't want to overthink this, just push a fix and hope for the best.
2022-06-26 16:42:29 +09:00
Dean Herbert
2ecab454aa Adjust animations and tolerances to make things feel snappier 2022-06-25 19:50:10 +09:00
Dean Herbert
a039f9878a Adjust menu cursor rotation to follow mouse, rather than be fixated around original click location 2022-06-25 19:33:44 +09:00
Dean Herbert
f15698d025
Merge pull request #18830 from peppy/c-sharp-10 2022-06-25 12:03:29 +09:00
Bartłomiej Dach
e0c2228b41
Revert downgrades in code inspection settings 2022-06-24 16:43:57 +02:00
Bartłomiej Dach
a83c45b50e
Fix compile failures from framework breaking change 2022-06-24 16:07:14 +02:00
Bartłomiej Dach
df30bedab6
Update framework again 2022-06-24 16:01:52 +02:00
Dean Herbert
14327943a2 Update framework 2022-06-24 21:28:30 +09:00
Dean Herbert
81bfe14063 Update DotSettings to match framework (in most cases) 2022-06-24 21:28:24 +09:00
Dean Herbert
31a447fda0 Update parameter discards 2022-06-24 21:26:19 +09:00
Dean Herbert
30eebf3511 Merge branch 'master' into c-sharp-10 2022-06-24 21:22:33 +09:00
Dean Herbert
2ca4184eda
Merge pull request #18834 from bdach/ban-implicit-to-lower-upper
Disallow usage of `string.To{Upper,Lower}()` without explicit culture
2022-06-24 20:39:58 +09:00
Dan Balasescu
7eb49dac7a
Merge pull request #18832 from peppy/bdc-remove-unused-path
Remove unused bindable retrieval flow in `BeatmapDifficultyCache`
2022-06-24 20:20:23 +09:00
Bartłomiej Dach
a329b346a4
Merge pull request #18833 from peppy/beatmap-manager-misc
Ensure `WorkingBeatmap` is always using a detached instance
2022-06-24 13:06:09 +02:00
Dean Herbert
823b3c1c0f Ensure WorkingBeatmap is always using a detached instance 2022-06-24 19:07:54 +09:00
Dean Herbert
2ae48d5a87 Rename incorrect parameter name in BeatmapManager.GetWorkingBeatmap 2022-06-24 19:07:54 +09:00
Bartłomiej Dach
26c5b59f6d
Replace usages of string.To{Lower,Upper}() 2022-06-24 11:57:45 +02:00
Dan Balasescu
e536256e3b
Merge branch 'master' into bdc-remove-unused-path 2022-06-24 17:55:56 +09:00
Dan Balasescu
c7e92f46f4
Merge pull request #18819 from peppy/difficulty-icon-refactor-pass
Refactor difficulty icons to not suck
2022-06-24 17:50:50 +09:00
Dean Herbert
c179127670 Remove unused bindable retrieval flow 2022-06-24 17:09:56 +09:00
Dean Herbert
0755430006 Use AddOnce for update calls 2022-06-24 17:09:56 +09:00
Dean Herbert
453b77e0dc Fix dangerous File.Copy causing intermittent realm migration test failures
Resolves an issue I've been able to locally reproduce on windows.
Basically, the `File.Copy` would begin while realm was blocking. The
"restore" operation is posted to the `SynchronizationContext` to run on
next update call, but in the mean time the copy would begin, causing a
conflict of interest.

Very dangerous. Only really noticeable on windows.
2022-06-24 17:09:56 +09:00
Dan Balasescu
6487cd674f
Merge pull request #18831 from peppy/fix-failing-realm-migration-test
Fix dangerous `File.Copy` causing intermittent realm migration test failures
2022-06-24 17:05:22 +09:00
Dean Herbert
8912f07745 Merge branch 'master' into difficulty-icon-refactor-pass 2022-06-24 16:34:35 +09:00
Dean Herbert
545c04aaf5 Fix dangerous File.Copy causing intermittent realm migration test failures
Resolves an issue I've been able to locally reproduce on windows.
Basically, the `File.Copy` would begin while realm was blocking. The
"restore" operation is posted to the `SynchronizationContext` to run on
next update call, but in the mean time the copy would begin, causing a
conflict of interest.

Very dangerous. Only really noticeable on windows.
2022-06-24 16:18:56 +09:00
Dean Herbert
224c23df77 Downgrade to v9 to support iOS toolchain 2022-06-24 14:58:22 +09:00
Dean Herbert
f71f6302fd Remove unnecessary null casts 2022-06-24 14:50:11 +09:00
Dean Herbert
f4173a3bff Update c# language version to 10 2022-06-24 14:48:32 +09:00
Dean Herbert
28837693e5 Nuke calculating everything
The whole component is pointless so I'm just going to nuke for now I
guess. Kind of makes the whole refactor effort pointless but oh well?

To expand on this, the implementation was actually incorrect as pointed
out at https://github.com/ppy/osu/pull/18819#pullrequestreview-1017886035.
2022-06-24 14:24:06 +09:00