Skip to content
This repository was archived by the owner on Aug 3, 2026. It is now read-only.

EpogArmory v0.46 — manifest-based sync

Pre-release
Pre-release

Choose a tag to compare

@Defcons Defcons released this 26 Apr 08:09
· 39 commits to main since this release

Manifest-based sync — kills the "[store] SKIP: existing set is newer (T vs T)" duplicate-send waste.

User report from a guild sync: lots of [store] SKIP: Poonchy (set 3) — existing set is newer (20:02:32 vs 20:02:32) because the responder was sending sets the requester already had at the same scanTime. The requester ingested them, validated, and rejected as not-newer. Pure bandwidth waste — and on a 100+ player DB that's most of the response.

What changed

  • SYNCREQ payload now carries a manifest: guid:group:scanTime;guid:group:scanTime;... of every set the requester already has stored.
  • Responder parses the manifest, builds a requesterHas[guid][group] = scanTime lookup, and skips any (guid, set) where their stored scanTime ≥ ours. New debug line: [sync] responding to <name>: queued N, skipped M (already fresh).
  • Per-(guid, group) entries — not per-player max scanTime — so spec-1 from yesterday and spec-2 from a month ago are tracked independently.
  • Sizing: ~30 bytes per entry. 100 players × ~1.5 sets ≈ 4.5 KB. Outgoing SYNCREQ now uses MakeChunks (was hard-coded ^1^1^) since multi-chunk delivery is now needed.

Backward compatibility

  • Old responder (≤v0.45) gets v0.46 SYNCREQ: sees an extra field, strsplit returns it as the 5th value, old code ignores it. Sends everything as before.
  • v0.46 responder gets old SYNCREQ: manifestStr is nil, ParseSyncManifest("") returns {}, dedup check falls through. Sends everything as before.
  • Both sides need v0.46 for the optimization. Mixed deployments fall back gracefully.

Install

Extract to <WoW>/Interface/AddOns/. The folder name inside the zip (EpogArmory) is what should land — overwrite any previous version.