Fix auction house bugs and redesign proxy liveness check#821
Draft
Swofty-Developments wants to merge 8 commits into
Draft
Fix auction house bugs and redesign proxy liveness check#821Swofty-Developments wants to merge 8 commits into
Swofty-Developments wants to merge 8 commits into
Conversation
SkyBlockService.init(...) never returns (it awaits a latch), so any setup placed after it in a service main was dead code. AuctionService set its cache and connected its databases after init, leaving AuctionService.cacheService null and NPEing every auction fetch; OrchestratorService scheduled its cleanup task after init, so it never ran. Move both setups before init.
…wire The auction protocols Jackson-serialise AuctionItem, whose nested item carries abstract ItemAttribute values Jackson cannot reconstruct, so listing or fetching auctions failed to deserialize. Delegate AuctionItem (de)serialization to the existing AuctionItemSerializer via @JsonValue/@JsonCreator.
Each game server polled the proxy with a ProxyIsOnlineProtocol request/response once per second and shut itself down on a single missed reply within ~1s (20 ticks). Under many concurrent servers that round-trip regularly exceeded the window and killed healthy hubs, and the timeout was coupled to the game tick rate. The proxy now refreshes a short-lived Redis key (one write regardless of server count) and each server reads it on an independent daemon thread, shutting down only after several consecutive absences.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
GUIAuctionCreateItem ran the add-item request inside the isOnline() callback and then blocked on future.join(). That callback executes on the single Redis subscriber thread, and the add-item reply arrives on that same thread, so the join deadlocked and the auction UI froze on "setting up the auction". Chain the response asynchronously instead.
Every auction GUI blocked a thread on .join(): isOnline() guards ran on the tick thread each refresh (~150ms stalls), and the fetch/manage/bids views joined on fetch responses. Convert the online checks and fetch renders to async continuations (thenAccept/thenRun), and run the BIN purchase handler on a virtual thread so its sequential joins park cheaply instead of freezing the tick.
The click handler cancelled every click on slot 45 to protect the offhand slot, but slot 45 is a normal slot in an open chest GUI. The 6th auction category button (TOOLS) sits there, so its clicks were swallowed before reaching the GUI item. Scope the offhand cancel to the player's own inventory.
The players module rendered <arg:0> wrapped in literal { }, showing
'Players ({1})' instead of 'Players (1)'; the murder mystery line had a stray }.
A single malformed stored auction made the whole category fetch throw; deserialize each document defensively and log+skip bad ones. Also surface browse failures via exceptionally() instead of swallowing them.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.