Skip to content

[08.5] [M0.7] Make loot item and money claims atomic#107

Merged
alseif0x merged 14 commits into
3.4.3from
106-085-m07-atomic-loot-claims
Jul 20, 2026
Merged

[08.5] [M0.7] Make loot item and money claims atomic#107
alseif0x merged 14 commits into
3.4.3from
106-085-m07-atomic-loot-claims

Conversation

@alseif0x

Copy link
Copy Markdown
Owner

Summary

  • move creature/gameobject loot claims behind shared reserve/commit/rollback authority
  • make item and money persistence cancellation-safe and reconcile runtime views after commit
  • add focused race, rollback, release, capture-diff, and quest-bound loot coverage
  • preserve MariaDB QuestRequired signed TINYINT semantics so completed quest items are not generated as normal loot
  • keep Rust 1.88 CI builds non-incremental to avoid the known compiler incremental-cache ICE

Validation

  • cargo +1.88.0 fmt --all -- --check
  • PROTOC=/home/cdmonio/.local/protoc/bin/protoc CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=1 cargo +1.88.0 test --locked -p wow-world handlers::loot::tests --lib (258 passed)
  • PROTOC=/home/cdmonio/.local/protoc/bin/protoc CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=1 cargo +1.88.0 check --locked -p world-server
  • local exhaustive Codex review: CLEAN
  • release binary built and deployed from 9bb9acd9
  • manual client QA: quest 8336 complete at 6/6; killing and looting a fresh Mana Wyrm no longer exposes or grants a seventh Arcane Sliver

Closes #106

Copy link
Copy Markdown
Owner Author

@codex review

@alseif0x

Copy link
Copy Markdown
Owner Author

@codex review

1 similar comment

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

https://github.com/alseif0x/rustycore/blob/8e2502c6a6b35c168e1acf1bf16f95e7c8b8c671/crates/wow-world/src/handlers/loot.rs#L5562-L5566
P2 Badge Check all viewers before finalizing loot owners

When a master-loot or loot-roll award is persisted by a remote winner's session, the original looter can still be present in the authority's players_looting, but this guard only consults the current session's local active-view maps. In that case the remote session has no local view, so the function falls through to fully_looted_lifecycle_observation_like_cpp() and the later creature/gameobject release/despawn path can run before the actual looter closes the window; gate this on the authority/global viewer list rather than just this session cache.


for current_status in self.player_quests.values() {

P2 Badge Use deterministic quest order for bound loot credit

When a looted item can satisfy quest-bound item objectives on more than one active quest, this new durable plan stops at the first match but scans player_quests, which is a HashMap, so the credited quest depends on hash iteration rather than C++'s deterministic quest-status order. That can persist credit to a different quest than the runtime follow-up expects, or simply diverge from C++ for characters carrying overlapping objectives; scan the same ordered quest set for both planning and application before returning the single credited status.


queue_visible_gameobjects_or_spellclicks_refresh_like_cpp(&group, &registry, my_guid)
.await;

P2 Badge Drop the group guard before awaiting refresh fanout

When converting a group or raid, this branch keeps the DashMap group-entry guard returned by group_reg.get(&group_guid) alive while awaiting the async visible-object refresh fanout. If a member's session command queue is full or slow, that await can hold the shard read guard for the timeout path and block concurrent group mutations needing the same registry entry; clone the GroupInfo or otherwise drop the guard before awaiting, as the leader-change path already does.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@alseif0x

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 65cc320f23

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/wow-world/src/handlers/group.rs
Comment thread crates/world-server/src/main.rs Outdated
@alseif0x

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: 49cf27dace

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@alseif0x
alseif0x merged commit ef40d8d into 3.4.3 Jul 20, 2026
9 checks passed
@alseif0x
alseif0x deleted the 106-085-m07-atomic-loot-claims branch July 20, 2026 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[08.5] [M0.7] Make loot item and money claims atomic

1 participant