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

13 Commits

Author SHA1 Message Date
Bartłomiej Dach
6ffe8e1713
Use staggered exponential backoff when retrying in PersistentEndpointClientConnector
There are suspicions that the straight 5s retry could have caused a
situation a few days ago for `osu-server-spectator` wherein it was
getting hammered by constant retry requests. This should make that
a little less likely to happen.

Numbers chosen are arbitrary, but mostly follow stable's bancho retry
intervals because why not. Stable also skips the exponential backoff in
case of errors it considers transient, but I decided not to bother for
now.

Starts off from 3 seconds, then ramps up to up to 2 minutes. Added
stagger factor is 25% of duration, either direction. The stagger factor
helps given that if spectator server is dead, each client has three
separate connections to it which it will retry on (one to each hub).
2024-02-06 15:40:30 +01:00
Bartłomiej Dach
4126dcbe28
Fix 2FA verification via link not working correctly
Closes https://github.com/ppy/osu/issues/26835.

I must have not re-tested this correctly after all the refactors...

Basically the issue is that the websocket connection would only come
online when the API state changed to full `Online`. In particular
the connector would not attempt to connect when the API state was
`RequiresSecondFactorAuth`, giving the link-based flow no chance to
actually work.

The change in `WebSocketNotificationsClientConnector` is relevant in
that queueing requests does nothing before the API state changes to full
`Online`. It also cleans up things a bit code-wise so... win?

And yes, this means that the _other_ `PersistentEndpointClientConnector`
implementations (i.e. SignalR connectors) will also come online earlier
after this. Based on previous discussions
(https://github.com/ppy/osu/pull/25480#discussion_r1395566545) I think
this is fine, but if it is _not_ fine, then it can be fixed by exposing
a virtual that lets a connector to decide when to come alive, I guess.
2024-01-30 21:49:06 +01:00
Bartłomiej Dach
1c612e2e0c
Implement client-side disconnection flow 2023-11-21 15:15:45 +09:00
Dean Herbert
27c497145f Fix the MOTHERLOAD of undetected issues that are now visible thanks to net6.0 2022-12-16 18:16:26 +09:00
Dan Balasescu
3570fa8d93 Fix hub clients not reconnecting after connection error 2022-12-09 17:12:20 +09:00
Dean Herbert
a5d22195f2 Fix potential incorrect connection state resulting in null reference 2022-11-18 13:45:46 +09:00
Dan Balasescu
f12ada9d92 Fix chat connecting too early 2022-11-04 19:36:24 +09:00
Dean Herbert
2b04e852be
Merge branch 'master' into websocket-chat-2 2022-11-02 14:56:13 +09:00
Dan Balasescu
30800c9252 Add/adjust xmldocs 2022-11-02 13:16:34 +09:00
Dan Balasescu
3816152c9d Merge branch 'socket-client' into websocket-chat-2 2022-11-02 11:49:57 +09:00
Dan Balasescu
e59c8b7d24 Use IDisposable instead 2022-11-02 11:49:04 +09:00
Dan Balasescu
c9108ce41b Rename StartAsync -> ConnectAsync 2022-11-02 11:44:16 +09:00
Dan Balasescu
46d1713e28 Rename Socket* -> PersistentEndpoint* 2022-11-02 11:43:22 +09:00