Skip to content

AH subprocess Phase 6A: move bidder-list assembly to the worker#445

Merged
MadMaxMangos merged 1 commit into
masterfrom
feature/ah-sp6-coordinator-state
Jul 15, 2026
Merged

AH subprocess Phase 6A: move bidder-list assembly to the worker#445
MadMaxMangos merged 1 commit into
masterfrom
feature/ah-sp6-coordinator-state

Conversation

@MadMaxMangos

@MadMaxMangos MadMaxMangos commented Jul 15, 2026

Copy link
Copy Markdown
Member

Summary

  • move client outbid-ID resolution and bidder-list composition into ah-service
  • fetch current bids and client-supplied outbid auctions in one house-scoped query
  • preserve legacy ordering and duplicate behavior
  • remove mangosd's worker-authority bidder reply lookup through its local AuctionHouseObject
  • reject bidder/owner results above the IPC entry limit with an immediate valid tooMany response
  • extend worker and mangosd regression coverage for complete bidder-list assembly

Motivation

Under worker write authority, mangosd's in-process auction book is only a startup snapshot and is not synchronized with worker mutations.

Bidder-list replies still used that stale local book to resolve the client's outbid auction IDs before prepending worker-provided current bids. This left part of the worker-owned read path dependent on non-authoritative mangosd state.

After this change, ah-service returns the complete ordered bidder result and mangosd only validates the session and serializes the worker response.

Preserved behavior

The worker matches the legacy bidder-list contract:

  • client-supplied outbid IDs appear first in client order
  • missing IDs are skipped
  • duplicate IDs remain duplicated
  • current bids follow in ascending auction-ID order
  • an auction present in both groups appears twice
  • existing house and cross-faction scoping is retained
  • the legacy in-process path remains unchanged when no worker is configured

Safety

Results exceeding BrowseResult::MAX_ENTRIES are converted into an immediate controlled tooMany response. This prevents mangosd from rejecting an oversized entry count and leaving the client waiting for the browse timeout.

No database migration or configuration change is required.

Verification

  • clean MSVC Release build and install
  • deployed binary hashes matched build outputs
  • worker config-free selftest passed
  • worker DB-backed selftest passed
  • mangosd AH tests passed:
    • ahbrowsehelper
    • ahbrowsepending
    • ahowner
    • ahusabilityref
    • ahmutpending
    • ahforwardreserve
    • ahrelease
    • ahmutresult
    • ahresolve
    • ahrepair
    • ahmaterialize
  • 1,024/1,025 IPC entry-boundary regression passed
  • independent code review completed with no remaining findings

Live smoke

Validated with two listings and two bidders:

  1. bidder A bid on both auctions
  2. bidder B outbid A on one auction
  3. A received the outbid notification and refund mail/gold
  4. A's Bids tab showed the outbid auction first
  5. A's still-winning auction appeared after it
  6. no AH or IPC errors were logged

Cancellation cleanup also passed with notifications, item-return mail, and bid-refund mail observed in game.

Final database verification showed:

  • zero live auctions
  • zero reserved custody rows
  • zero in-flight journal rows

This change is Reviewable

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics -9 complexity · 0 duplication

Metric Results
Complexity -9
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@AppVeyorBot

Copy link
Copy Markdown

@MadMaxMangos MadMaxMangos merged commit 570634a into master Jul 15, 2026
14 checks passed
@MadMaxMangos MadMaxMangos deleted the feature/ah-sp6-coordinator-state branch July 15, 2026 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants