Epic: Hydration System Refactor #153
Labels
No labels
Blocked
Duplicate
MoSCoW/Could Have
MoSCoW/Must Have
MoSCoW/Should Have
Points/1
Points/13
Points/2
Points/21
Points/3
Points/5
Points/8
Priority/Backlog
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
State/Completed
State/In progress
State/In review
State/Paused
State/Unverified
State/Verified
State/Wont Do
Type/Bug
Type/Epic
Type/Feature
Type/Legendary
Type/Task
Type/Testing
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Reference: aethyr/Aethyr#153
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background and Context
The current
Hydrationmodule uses a class variable@@volatilethat is shared across the entire inheritance hierarchy. WhenPublisherdeclaresvolatile :@local_registrationsandPlayerdeclaresvolatile :@help_library, :@player, both write to the same@@volatilearray. This leaks volatile declarations across unrelated classes — any class that includes Hydration sees every other class's volatiles.The specification (Persistence and Storage section) prescribes replacing
@@volatilewith@_volatile_vars(a per-class instance variable), adding ancestor chain traversal viacollect_volatile_vars, and protecting the dehydrate/rehydrate cycle with aSERIALIZATION_MUTEX.Demonstrable Outcome
Volatile variable declarations are per-class, collected via ancestor chain traversal, and protected by a mutex during serialization. No class sees another class's volatile declarations unless it is a descendant.
Acceptance Criteria
@@volatilereplaced with@_volatile_varsper-class instance variablecollect_volatile_varswalks ancestor chain to build union of volatile setsSERIALIZATION_MUTEXguards dehydrate/rehydrate cycle