You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
15 duplicate votes made it into the votes journal of the Decentralized Treasury Spending proposal. The bug that allowed for this has existed since Politeia launched, but this is the first time that any duplicate votes made it into the politeiad git repo for any proposal. politeiad replays all vote journals on startup and explicitly checks for duplicate votes. This allowed for the bug to be caught as soon a the first duplicate vote made it into the repo.
politeiad has a memory cache of all cast votes. When a user casts a vote, politeiad checks the memory cache to see if the vote already exists. If it does not exist, the vote is writen to the votes journal then added to the memory cache. This memory cache read/write operation was not atomic. If a user submitted the same vote request multiple times, concurrently, it was possible for a duplicate vote to be added to the votes journal before the memory cache was properly updated.
Removing this query does mean that the 15 duplicate votes that made it into the "Decentralize Treasury Spending" proposal vote journal will be added to the cache and reflected in the vote total. I don't consider this to be a huge issue since the proposal passed with a 97.49% approval rating. Documenting the 15 duplicate votes in the Politeia Digest and Decred Journal should be sufficient.
15 duplicate votes made it into the votes journal of the Decentralized Treasury Spending proposal. The bug that allowed for this has existed since Politeia launched, but this is the first time that any duplicate votes made it into the politeiad git repo for any proposal. politeiad replays all vote journals on startup and explicitly checks for duplicate votes. This allowed for the bug to be caught as soon a the first duplicate vote made it into the repo.
politeiad has a memory cache of all cast votes. When a user casts a vote, politeiad checks the memory cache to see if the vote already exists. If it does not exist, the vote is writen to the votes journal then added to the memory cache. This memory cache read/write operation was not atomic. If a user submitted the same vote request multiple times, concurrently, it was possible for a duplicate vote to be added to the votes journal before the memory cache was properly updated.
The text was updated successfully, but these errors were encountered: