Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create, join, and part multiplayer rooms only via the multiplayer server #31637

Merged
merged 22 commits into from
Mar 4, 2025

Conversation

smoogipoo
Copy link
Contributor

@smoogipoo smoogipoo commented Jan 23, 2025

Old Server New Server
Old Client 🟢 🟢
New Client 🔴 🟢

osu-server-spectator is now the authority in creating multiplayer rooms. Most of the complexity of this PR is a result of RoomManager no longer having the ability to create/join/part rooms, which is now handled either by the multiplayer server or by API requests (for playlists + daily challenge).

MultiplayerRoomManager no longer exists, and I expect RoomManager to go away in the near future too. I'd actually already started down that path but wanted to keep this PR somewhat lean, and so I've only added an XMLDoc on RoomManager mentioning this.

Relevant functionality has been removed from `RoomManager` in the
process.
In particular, when the exception is:
`AggregateException { AggregateException { HubException } }`,
then the existing code will only unwrap the first aggregate exception.

The overlay's code was copied from the extension so both have been
adjusted here.
@peppy peppy self-requested a review February 11, 2025 14:30
@peppy
Copy link
Member

peppy commented Feb 11, 2025

As a heads up, I'll review this but won't merge until after the imminent release.

@bdach bdach self-requested a review February 25, 2025 08:19
Copy link
Collaborator

@bdach bdach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Initial pass, have not attempted to run yet

@@ -361,14 +361,21 @@ public override bool OnExiting(ScreenExitEvent e)
if (!ensureExitConfirmed())
return true;

RoomManager?.PartRoom();
if (Room.RoomID != null)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question: What does this null check do?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The null check itself is probably because this screen is used to do the setup, prior to the room being created. I foresee a future where we move the setup stage out of this screen, as it unnecessarily complicates things.

@@ -15,6 +15,9 @@ public class CreateRoomRequest : APIRequest<APICreatedRoom>
public CreateRoomRequest(Room room)
{
Room = room;

// Also copy back to the source model, since it is likely to have been stored elsewhere.
Success += r => Room.CopyFrom(r);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remark, action not expected: I get that this was copied from RoomManager, but somehow it feels much dodgier to have things work this way. With this the only thing that guarantees full correctness of behaviour is the order of execution of event handlers in the invocation list.

Possibly the way to resolve that would be to split off "this is a room to be created" from "this is an existing room" in terms of models used, but I can't exactly estimate the scope of such an undertaking.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With this the only thing that guarantees full correctness of behaviour is the order of execution of event handlers in the invocation list.

Which can't really be relied on anyway. For example RoomID is updated first and used to determine when setup is in progress, with Playlist updated later on and used to pick out the initial selected item. This results in some scheduling awkwardness in screens:

private void updateSetupState()
{
if (Room.RoomID != null)
{
// Set the first playlist item.
// This is scheduled since updating the room and playlist may happen in an arbitrary order (via Room.CopyFrom()).
Schedule(() => SelectedItem.Value = Room.Playlist.FirstOrDefault());
}
}

What I would probably do other than this is to manually Room.CopyFrom() on success wherever required, which should only be a handful of places (from memory) - lounge, playlists, playlists creation, and some places in tests. That said, I would like to do that after #31866, which further touches on all of this - see for instance PlaylistsRoomUpdater which does room.CopyFrom() internally rather than relying on the request to do it.

Copy link
Collaborator

@bdach bdach Feb 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For example RoomID is updated first and used to determine when setup is in progress, with Playlist updated later on and used to pick out the initial selected item. This results in some scheduling awkwardness in screens:

That snippet you linked there talks about the order of copying properties though, right? My concern is specifically with the CopyFrom() invocation being the first Success callback to run. If it were to - for whatever reason - run after any other Success callback, the callbacks that would run prior to it would see stale data, which was not previously possible because RoomManager was responsible for presenting the Room instance after CopyFrom().

The manual CopyFrom() plan sounds tolerable though, so I don't see anything else needing follow-up in this review thread.

if (message.StartsWith(not_found_prefix, StringComparison.Ordinal))
{
ErrorText.Text = "The selected beatmap is not available online.";
room.Playlist.SingleOrDefault()?.MarkInvalid();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slight concern: This change bothers me because it assumes that room.Playlist.SingleOrDefault() is going to be the same object reference as the UI-facing, displayed, playlist item, and that feels like a brittle assumption.

Copy link
Contributor Author

@smoogipoo smoogipoo Feb 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is always the case for multiplayer for now. Unsure if this going to change or if it's going to go in the opposite direction - rooms being able to be started with no items in the playlist (matchmaking will eventually allow that, so it's not a stretch and would be a UX improvement here).

else
{
room.Playlist = [item];
this.Exit();
}

bdach
bdach previously approved these changes Feb 27, 2025
Copy link
Collaborator

@bdach bdach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not entirely sure where this is going to go further but at this point I have no real objections. Tested this quite a fair bit with staging, including testing with simulated network latency & packet drop rates up to 40%, and saw nothing I'd be concerned about.

@peppy not sure if you want to put an eye on this before I click any buttons?

@peppy
Copy link
Member

peppy commented Feb 28, 2025

I'll give it a quick one-over today.

@peppy
Copy link
Member

peppy commented Feb 28, 2025

The "Change settings.." button doesn't seem to show up on this PR.

JetBrains Rider-EAP 2025-02-28 at 04 29 45

Seems like the Host on a room may not be being set correctly (or in time?)

@peppy peppy added the next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! label Feb 28, 2025
Copy link
Member

@peppy peppy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As commented (don't mind this review, just testing a probable github bug)

@smoogipoo
Copy link
Contributor Author

smoogipoo commented Feb 28, 2025

Good catch. That was relying on the API room getting updated via the web request, relevant code was missing from MultiplayerClient.

@peppy peppy self-requested a review March 3, 2025 02:51
@peppy
Copy link
Member

peppy commented Mar 3, 2025

Interops seemingly aren't working as expected server-side. Attempting to change to a beatmap which doesn't exist on server takes ~5 seconds to respond:

osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] 78 creating room
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971282
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971282
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 28.2503ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 28.5864ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971282 failed, retrying (2 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971282 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971283
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971283
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 9.4779ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.8745ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971283 failed, retrying (1 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971283 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971284
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971284
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 11.2103ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 11.5505ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971284 failed, retrying (0 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971284 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971285
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971285
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 9.863ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.1414ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] Failed to invoke hub method: CreateRoom(RoomID:0 Host: Users:0 State:Open Settings: [Name:wang's awesome room Password:no Type:HeadToHead Item:0 Queue:HostOnly Start:00:00:00 AutoSkip:False])
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971285 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[8]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Failed to invoke hub method 'CreateRoom'.
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971285 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.<Invoke>g__ExecuteInvocation|18_0(DefaultHubDispatcher`1 dispatcher, ObjectMethodExecutor methodExecutor, THub hub, Object] arguments, AsyncServiceScope scope, IHubActivator`1 hubActivator, HubConnectionContext connection, HubMethodInvocationMessage hubMethodInvocationMessage, Boolean isStreamCall)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] 78 creating room
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 10.2517ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.5046ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293 failed, retrying (2 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 10.2928ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.6072ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294 failed, retrying (1 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 8.5921ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 8.9952ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295 failed, retrying (0 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 8.7695ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 9.0421ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] Failed to invoke hub method: CreateRoom(RoomID:0 Host: Users:0 State:Open Settings: [Name:wang's awesome room Password:no Type:HeadToHead Item:0 Queue:HostOnly Start:00:00:00 AutoSkip:False])
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[8]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Failed to invoke hub method 'CreateRoom'.
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.<Invoke>g__ExecuteInvocation|18_0(DefaultHubDispatcher`1 dispatcher, ObjectMethodExecutor methodExecutor, THub hub, Object] arguments, AsyncServiceScope scope, IHubActivator`1 hubActivator, HubConnectionContext connection, HubMethodInvocationMessage hubMethodInvocationMessage, Boolean isStreamCall)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.<Invoke>g__ExecuteInvocation|18_0(DefaultHubDispatcher`1 dispatcher, ObjectMethodExecutor methodExecutor, THub hub, Object] arguments, AsyncServiceScope scope, IHubActivator`1 hubActivator, HubConnectionContext connection, HubMethodInvocationMessage hubMethodInvocationMessage, Boolean isStreamCall)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] 78 creating room
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 10.2517ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.5046ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293 failed, retrying (2 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971293 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 10.2928ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 10.6072ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294 failed, retrying (1 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971294 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 8.5921ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 8.9952ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: LIO[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295 failed, retrying (0 remaining)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971295 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Start processing HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[100]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Sending HTTP request POST http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.ClientHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Received HTTP response headers after 8.7695ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: System.Net.Http.HttpClient.Default.LogicalHandler[101]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       End processing HTTP request after 9.0421ms - 422
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Multiplayer[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       [user:78] Failed to invoke hub method: CreateRoom(RoomID:0 Host: Users:0 State:Open Settings: [Name:wang's awesome room Password:no Type:HeadToHead Item:0 Queue:HostOnly Start:00:00:00 AutoSkip:False])
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp fail: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[8]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Failed to invoke hub method 'CreateRoom'.
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       osu.Server.Spectator.Services.SharedInterop+SharedInteropRequestFailedException: beatmaps not found: 4939977
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp        ---> System.Exception: Shared interop request to http://osu-web-octane/_lio/multiplayer/rooms?timestamp=1740971296 failed with UnprocessableEntity (Unprocessable Entity).
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          --- End of inner exception stack trace ---
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.runCommand(HttpMethod method, String command, Object postObject) in /app/Services/SharedInterop.cs:line 92
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Services.SharedInterop.CreateRoomAsync(Int32 hostUserId, MultiplayerRoom room) in /app/Services/SharedInterop.cs:line 120
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.Hubs.Multiplayer.MultiplayerHub.CreateRoom(MultiplayerRoom room) in /app/Hubs/Multiplayer/MultiplayerHub.cs:line 53
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at lambda_method41(Closure, Object)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteMethod(ObjectMethodExecutor methodExecutor, Hub hub, Object] arguments)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.ConcurrentConnectionLimiter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/ConcurrentConnectionLimiter.cs:line 106
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at osu.Server.Spectator.LoggingHubFilter.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next) in /app/LoggingHubFilter.cs:line 30
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.HubFilterFactory.InvokeMethodAsync(HubInvocationContext invocationContext, Func`2 next)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp          at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.<Invoke>g__ExecuteInvocation|18_0(DefaultHubDispatcher`1 dispatcher, ObjectMethodExecutor methodExecutor, THub hub, Object] arguments, AsyncServiceScope scope, IHubActivator`1 hubActivator, HubConnectionContext connection, HubMethodInvocationMessage hubMethodInvocationMessage, Boolean isStreamCall)
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp info: MetadataBroadcaster[0]
osu-web-osu-server-spectator-5c5dcb6cf7-kqzcp       Polled beatmap changes up to last queue id 26419

Copy link
Member

@peppy peppy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As commented. Probably going to require a server-side fix.

@smoogipoo
Copy link
Contributor Author

Above will be fixed by ppy/osu-server-spectator#274

@peppy peppy self-requested a review March 4, 2025 04:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:multiplayer next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! size/XXL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants