andymccurdy/redis-py — pull request #489 by chillipino (2014-06-05 23:16:50+00:00)
Title: Lock.release(): reorder code to avoid token overwrite

the recent lock rewrite reintroduced a data stomp bug similar to the one fixed in #384. this change should patch the problem for locks that do not have timeouts, which is the same behavior the library had pre-rewrite. [here is a gist demonstrating the issue.](https://gist.github.com/chillipino/fd8992c770ecdb1934db) before applying this change, i was able to get double-release exceptions about 50% of the time on a linux VM with a sleepTime of 0.15s, and 100% of the time on windows with a sleepTime of 0.1s. i did all of the above tests with python 2.7.5.

unfortunately, the bug described in #416 is still present, which is closely related to this code. i'll open a separate issue for that.