Skip to content

Velocity-CTD Rewrite#726

Open
R00tB33rMan wants to merge 138 commits intolibdeflatefrom
xcd-merge
Open

Velocity-CTD Rewrite#726
R00tB33rMan wants to merge 138 commits intolibdeflatefrom
xcd-merge

Conversation

@R00tB33rMan
Copy link
Member

The long-awaited rewrite of CTD that stabilizes and improves the entirety of CTD.

xCodiq and others added 30 commits August 4, 2025 22:46
# Conflicts:
#	proxy/src/main/java/com/velocitypowered/proxy/redis/RedisManagerImpl.java
#	proxy/src/main/java/com/velocitypowered/proxy/redis/multiproxy/MultiProxyHandler.java
# Conflicts:
#	proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java
Commit didn't pull upstream yet.
…nagement & use unique id's instead of Player object in player related queue-operations
# Conflicts:
#	proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java
#	proxy/src/main/java/com/velocitypowered/proxy/redis/multiproxy/MultiProxyHandler.java
@WouterGritter
Copy link
Collaborator

The fixed Microslop copilot's suggestions have been implemented in https://github.com/GemstoneGG/Velocity-CTD/tree/xcd-merge-queue-reimplementation, this will get merged into this branch/PR soon (once the queue reimplementation is mature enough).

Microslop copilot suggested 1 actual good fix for an edge case which we would never hit, one real typo in a javadoc comment, and suggested to add @Nullable to an api which was correct.

@WouterGritter
Copy link
Collaborator

[xcd-merge-queue-reimplementation] will get merged into this branch/PR soon (once the queue reimplementation is mature enough).

Merged.

- Ghost players not tracked by proxy but still being connected when TransitionSessionHandler#disconnected got called during a transfer.
- Properly fix handling an error state during "Reconfiguring..." in ConfigSessionHandler#disconnected by completing the future NON-exceptionally with an error result.

Upstream's solution is (still) to throw an IOException here, causing in error spam and the wrong code being executed in handlers of the futures. Our solution used to be removing the player state (and hoping the connection would drop) but the connection could stay alive, introducing the ghost player. This new fix is to just handle it like an INTERNAL_SERVER_CONNECTION_ERROR, meaning the right choice will be made in the handler of the futures (either disconnect the player or abort the transfer). See PaperMC#1251
…ation module (reduces unnecessary & excessive class casts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants