## [Rewrite `BackgroundMusicManager` to not run into framework
breakage](https://github.com/ppy/osu/commit/622216d8911832c39fa4e126b2810e4e0f46cbf7)
The attempted proper fix to this was
https://github.com/ppy/osu-framework/pull/6727. Unfortunately when
presented with [the framework
bump](https://github.com/ppy/osu/pull/37217) with that change, CI says
"you're stupid" and fails on some disposal idiocy that of course is
undebuggable and irreproducible:
The active test run was aborted. Reason: Test host process crashed :
Unhandled exception. System.AggregateException: One or more errors
occurred. (Object reference not set to an instance of an object.)
---> System.NullReferenceException: Object reference not set to an
instance of an object.
at osu.Framework.Audio.Sample.SampleChannelBass.Dispose(Boolean
disposing)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task&
currentTaskSlot, Thread threadPoolThread)
--- End of inner exception stack trace ---
at osu.Framework.Audio.AudioCollectionManager`1.UpdateChildren()
at osu.Framework.Audio.AudioCollectionManager`1.UpdateChildren()
at osu.Framework.Audio.AudioCollectionManager`1.UpdateChildren()
at osu.Framework.Audio.AudioCollectionManager`1.UpdateChildren()
at osu.Framework.Threading.AudioThread.OnExit()
at osu.Framework.Threading.GameThread.setExitState(GameThreadState
exitState)
at osu.Framework.Threading.GameThread.RunSingleFrame()
at osu.Framework.Threading.GameThread.<createThread>g__runWork|70_0()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state)
(https://github.com/ppy/osu/actions/runs/24019928154/job/70046733058?pr=37217#step:5:119)
I no longer have the energy for any of this shit.
@nekodex would appreciate if you could check that I actually haven't
broken anything with the bgm here. Seems okay to me in test scenes at
least.
## [Apply lowest-effort maybe-fixing changes to a bunch of flaking
tests](https://github.com/ppy/osu/commit/7bd3ca4adfcce5b90add11565a13f3fe9177ad5e)
None of the failures are reproducible locally, of course. I'm tired of
this. If anyone else wants to subject themselves to actually
investigating any of these, by all means, godspeed and good luck.
What the actual heck is that magic number stupidity.
I'm not looking into why the test falls over so badly that it apparently
dies on some main menu logic just because assertions fail, because the
main menu logic is for hold-to-song-select-v2 and is thus temporary.
The game was being constructed befor the API was setup, which could mean
depending on test execution ordering and speed, the recommendations
array would not be filled.
Easy to reproduce by `[Solo]`ing `TestCorrectStarRatingIsUsed`.
See https://github.com/ppy/osu/runs/28689915929#r0s0.
One of my pending work items for post-realm merge.
The lowest-level import task is no longer asynchronous, as we don't want
it to span multiple threads to allow easier interaction with realm.
Removing the `Task` spec simplifies a heap of usages.
Individual usages should decide whether they want to run the import
asynchronously, by either using an alternative override or spooling up a
thread themselves.
This reverts commit f3faad74d5, reversing
changes made to 712e7bc7bf.
Several issues arose after migrating to 5.0, including, but possibly not
limited to, performance regressions in song select, as well as failures
when attempting to save beatmaps after metadata changes in the editor.
Is no longer necessary because recommender uses bindable state value changes, compared to when the test was written, and runs the state change once on load