{"push_id":1374429007,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"e06afb8df51e7fdf1bebb8db60db7b818750dacf","before":"87e1bca4477a3cc767ca71be023ced183d74e538","commits":[{"sha":"e06afb8df51e7fdf1bebb8db60db7b818750dacf","author":{"name":"Gustav Paul","email":"ffb6cdd24c907c7bd4e9e559052952ff58ee9ae8@mesosphere.io"},"message":"fix spin in (*Lock).Lock()\n\nConsider the case where there are two clients contending for a lock.\nThe first creates  '/lock/00000'\nThe second creates '/lock/00001'\n\nNow, the first lists the children of '/lock' and sees that it has\ncreated the lock and returns.\n\nThe second starts looping through the children in the aforementioned order.\nBefore the first child is processed we have\nlowestSeq=1\nprevSeq=0\nprevSeqPath=\"\"\n\nSince the first child is '00000' we set lowestSeq=0.\nHowever, prevSeq == s, so the second condition fails and\nwe don't update the prevSeqPath.\n\nThen we process '00001' and again, since s == seq, so !(s<seq), we again\ndon't update prevSeqPath.\n\nThis leads to a scenario where lowerdown we call GetW(\"/lock/\") instead of GetW(\"/lock/00000\")","distinct":true,"url":"https://api.github.com/repos/gpaul/go-zookeeper/commits/e06afb8df51e7fdf1bebb8db60db7b818750dacf"}]}
{"actor":{"display_login":"gpaul"}}