File Details
MarketSync Beta v0.5.3
- B
- Feb 25, 2026
- 54.35 KB
- 38
- 2.5.5+1
- Classic + 1
File Name
MarketSync.0.5.3-beta.zip
Supported Versions
- 2.5.5
- 1.15.8
[0.5.3] - 2026-02-25
Improved
- Improved: Hybrid Metadata Retention Policy. Introduced a two-tier automated pruning system that prevents unbounded RAM growth from
ItemMetadataaccumulation over long-term usage. Tier 1 caps per-itemdaysattribution sub-tables to the 7 most recent scan days, removing old day-by-day "who synced it" entries that no feature relies on. Tier 2 removes the entire metadata entry for items whoselastTimeis older than 30 days — if nobody has scanned or synced an item in a month, the attribution data is stale and meaningless. On a mature dataset (~30k items with months of daily scans), this reducesItemMetadataRAM usage by approximately 75-80%. The pruning runs lazily at Stage 2.5 (60 seconds after login), slotted between passive sync startup and search index building, with zero impact on gameplay performance. Auctionator's price database is never touched — only MarketSync's own attribution metadata is pruned.
[0.5.2] - 2026-02-22
Fixed
- Fixed: A stale
CachedScanStatscache caused the Swarm to report an incorrect item count after receiving a sync. The cached count was written once per session byCountRecentItems()and never invalidated when incomingBRESdata inserted new items into the Auctionator database. AnyADVbroadcast that fired mid-transfer would silently advertise the pre-sync count. The cache is now eagerly invalidated on the very firstBRESchunk of each sync session, and again whenCommitGuildSync()finalizes the merge — guaranteeing the nextADValways re-counts from the live database. - Fixed: A race condition between the 8-second idle timeout and the
ENDpacket that could cause a fully successful sync to be misidentified as "partial." If the idle timer fired beforeENDarrived, it resetRxCountto 0. WhenENDthen checkedrxCount >= itemsSent, it saw 0 and skipped thePersonalScanTimestamp — leaving the client eligible for a redundant re-PULL on the next ADV cycle. Introduced asessionRxTotalcounter that survives the timeout reset, so theENDhandler always has the true received count for completeness validation. - Fixed: The Chat Price Check anti-flood system (
? [Item Link]) was completely non-functional, causing every client on the network to reply simultaneously. Three bugs were identified and resolved: (1) Self-reply — clients replied to their own queries because the self-sender filter only applied to addon protocol messages, not chat events. Self-queries are now properly ignored. (2) No addon-channel coordination — the old system relied on detecting another client's visible chat reply to cancel a pending response, but chat messages have delivery latency and both random timers would fire before either reply was delivered. A new two-phaseCLAIMprotocol has been introduced: when a client's random timer fires, it broadcastsCLAIM;itemIDon the addon prefix (near-instant, zero chat throttle) but holds its chat reply for a 300ms grace period. If a competingCLAIMarrives during that window, a deterministic alphabetical-name tiebreaker guarantees exactly one winner — even when two clients fire within milliseconds of each other. (3) Wider lottery window — the random delay has been widened from 0.5–2.0s to 0.5–3.0s to further reduce the chance of timer collisions. - Fixed: The
BroadcastRecentData()ticker never cancelled itself after the coroutine finished, causing an orphaned timer that fired indefinitely. It now self-cancels once the broadcast completes.
Improved
- Improved:
UpdateLocalDBByKey()— the sync hot path — now caches the realm database reference once per call instead of resolvingGetRealmDB()6 times per item. During a 2,000-item sync this eliminates ~12,000 redundantGetNormalizedRealmName()lookups. - Improved: The passive advertisement ticker no longer performs a redundant
IsInInstance()check. This condition is already handled byCanSync()insideSendAdvertisement(), which also covers combat, raids, dungeons, PvP, and arena — a strict superset. - Improved: The
CLAIMhandler now evicts staleclaimContestantsentries for items no longer in play, preventing the table from growing indefinitely over long sessions with frequent?queries.