VoltDB/voltdb — pull request #597 by nshi (2013-07-01 19:52:56+00:00)
Title: ENG-4858: Atomically add new partition to ZooKeeper.

The LeaderAppointer's partition callback checks if the cluster is k-safe or not
whenever it's fired. Adding a new partition consists of two ZK operations,
adding the partition ZK dir and adding the replica node under the partition
dir. This is not atomic. The LeaderAppointer's partition callback could be
called between the two operations and crash the cluster thinking that the
partition is not k-safe.

Adding a state to the partition dir to indicate whether the partition has
finished initializing or not. If not, LeaderAppointer shouldn't perform k-safety
check on that partition. The first replica that adds itself under that partition
dir will also mark it as initialized.