`decide_t` should take a multiset.
Currently, decide functions take in a set of replica replies (see here). However, this prevents the decide function from knowing the counts of the replies. For example, the lock server decide function considers a lock acquired if a majority of replicas reply "0"
indicating the lock was granted. However, if all but one replica replies "0"
and one replica replies "-1"
(indicating the lock was not acquired), then the set passed to the decide function is a set of just {"0", "1"}
. This prevents the decide function from knowing how many replicas replied with "0"
.
Instead, decide functions should take in something like a multiset<string>
or just a map<string, int>
of counts.