After examining a crash dump from a cluster which was unable to start some of its ensembles, it appears that the ensemble peers are blocked in the following call to global:trans/2: https://github.com/basho/riak_ensemble/blob/develop/src/synctree_leveldb.erl#L69-L70. This call needlessly creates contention across the entire cluster when it appears the intention was to only lock access locally. Is this call to global:trans needed? If so, perhaps [node()] should be passed as a third parameter so that the lock is only created locally.
After examining a crash dump from a cluster which was unable to start some of its ensembles, it appears that the ensemble peers are blocked in the following call to global:trans/2: https://github.com/basho/riak_ensemble/blob/develop/src/synctree_leveldb.erl#L69-L70. This call needlessly creates contention across the entire cluster when it appears the intention was to only lock access locally. Is this call to global:trans needed? If so, perhaps [node()] should be passed as a third parameter so that the lock is only created locally.