Closed evil-morfar closed 4 years ago
3 completely solves the problem, but it requires a better design to make it work. It would suit for RC v3.0 Loottable is not a good structure to store the item information
However 2 is the easiest solution right now, but it does not completely solve the problem. It just makes the bug happen much less often, because there is no guarantee that item info is fetched within 1 frame (though it does most of the time).
1 is a bad design. I don't like it.
As what I said in #164, to completely solve this issue, the entire code structure to handling item information should be changed.
There's a small potential for throwing away data with the current lootTable caching system. Consider this log from a recent raid of mine:
It's possible for
lootAck
s to arrive between the 1 frame recall toOnCommReceived
. This causes the acks to be applied to a previous session, asVotingFrame:Setup()
is called later, thus briefly showing candidates as "timeout" until their response arrives, but still doesn't show their equipped gear or potential autopass. It happens very rarely (I believe I've seen it ~5 times so far), but is an issue nonetheless.As of right now, afaik, RCLootCouncil does not require any items to be cached, so the easiest solution is to do the
GetItemInfo
calls to prompt the cache, but without doing anything if it's not cached. This still caches (as per our tests) all items within the next frame - the only issue with that is if anything anywhere assumes the items are cached within that 1 frame.A few other solutions
lootAck
s and probably also responses. This is somewhat tricky, as there's currently no way of knowing whichlootTable
a particularlootAck
belongs to, which I believe is required to ensure it's only applied the right place/time.VotingFrame:Setup()
at least 1 frame. This would hardly be noticeable for anyone, but is a delay, and somewhat annoying to do.