)]}'
{"tooz/drivers/mysql.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2fb6ae175ae38a850eba82419f6da2f6b12bddb1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tooz import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def get_connection(parsed_url, options):"},{"line_number":26,"context_line":"    host \u003d parsed_url.netloc"},{"line_number":27,"context_line":"    port \u003d parsed_url.port"},{"line_number":28,"context_line":"    dbname \u003d parsed_url.path[1:]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_59c8b4a7","line":25,"updated":"2015-02-13 09:23:46.000000000","message":"Not sure why you moved that out of the class?\nCould be a staticmethod","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0c5bf764de06efc1dad300e943524a2e02acd7c9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from tooz import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def get_connection(parsed_url, options):"},{"line_number":26,"context_line":"    host \u003d parsed_url.netloc"},{"line_number":27,"context_line":"    port \u003d parsed_url.port"},{"line_number":28,"context_line":"    dbname \u003d parsed_url.path[1:]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_deee41ed","line":25,"in_reply_to":"da86d52c_59c8b4a7","updated":"2015-02-13 11:35:28.000000000","message":"Done","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"}],"tooz/drivers/pgsql.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2fb6ae175ae38a850eba82419f6da2f6b12bddb1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        raise coordination.ToozError(_format_exception(e))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_connection(parsed_url, options):"},{"line_number":88,"context_line":"    host \u003d options.get(\"host\", [None])[-1]"},{"line_number":89,"context_line":"    port \u003d parsed_url.port or options.get(\"port\", [None])[-1]"},{"line_number":90,"context_line":"    dbname \u003d parsed_url.path[1:] or options.get(\"dbname\", [None])[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_590d14e7","line":87,"updated":"2015-02-13 09:23:46.000000000","message":"same as in mysql","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0c5bf764de06efc1dad300e943524a2e02acd7c9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        raise coordination.ToozError(_format_exception(e))"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def get_connection(parsed_url, options):"},{"line_number":88,"context_line":"    host \u003d options.get(\"host\", [None])[-1]"},{"line_number":89,"context_line":"    port \u003d parsed_url.port or options.get(\"port\", [None])[-1]"},{"line_number":90,"context_line":"    dbname \u003d parsed_url.path[1:] or options.get(\"dbname\", [None])[-1]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_feeb05da","line":87,"in_reply_to":"da86d52c_590d14e7","updated":"2015-02-13 11:35:28.000000000","message":"Done","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"}],"tooz/locking.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e434dfbf821fcc2b3c97aa2d0b03115ef6d80821","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, lockclass, name):"},{"line_number":70,"context_line":"        super(WeakLockHelper, self).__init__(name)"},{"line_number":71,"context_line":"        self.acquired \u003d False"},{"line_number":72,"context_line":"        self._lockclass \u003d lockclass"},{"line_number":73,"context_line":"        self._lock \u003d threading.Lock()"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_de42f366","line":71,"updated":"2015-02-12 14:08:47.000000000","message":"useless?","commit_id":"48e01202cc28d59c279d2048c5ffb66bc47ecf9d"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"9407ca2d709aeb77eaf835df8367965c1e8d5a57","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, lockclass, name):"},{"line_number":70,"context_line":"        super(WeakLockHelper, self).__init__(name)"},{"line_number":71,"context_line":"        self.acquired \u003d False"},{"line_number":72,"context_line":"        self._lockclass \u003d lockclass"},{"line_number":73,"context_line":"        self._lock \u003d threading.Lock()"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_b1a3ad41","line":71,"in_reply_to":"da86d52c_de42f366","updated":"2015-02-12 15:43:16.000000000","message":"Done","commit_id":"48e01202cc28d59c279d2048c5ffb66bc47ecf9d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7547ba51054202e270a1d5b2fba85782bfac5943","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class WeakLockHelper(Lock):"},{"line_number":63,"context_line":"    \"\"\"Helper for lock that need to rely on a state in memory"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_a5426c0c","line":62,"updated":"2015-02-13 02:17:07.000000000","message":"Should this go in utils instead?","commit_id":"f8a9a5ff64833881264e30d13e8f38ca7171511a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"218d1b8f9180cab35317d23927360d696d346b3e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class WeakLockHelper(Lock):"},{"line_number":63,"context_line":"    \"\"\"Helper for lock that need to rely on a state in memory"},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_5edb3a4e","line":62,"in_reply_to":"da86d52c_a5426c0c","updated":"2015-02-13 07:28:04.000000000","message":"I have put it here, because it implements the Lock interface.","commit_id":"f8a9a5ff64833881264e30d13e8f38ca7171511a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9e5ad36c760a37f5727c86ace07e9198037c75ba","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    ACQUIRED_LOCKS \u003d dict()"},{"line_number":69,"context_line":"    RELEASED_LOCKS \u003d weakref.WeakValueDictionary()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, lockclass, name, *args, **kwargs):"},{"line_number":72,"context_line":"        super(SharedWeakLockHelper, self).__init__(name)"},{"line_number":73,"context_line":"        self.acquired \u003d False"},{"line_number":74,"context_line":"        self._newlock \u003d lambda: lockclass("}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_2b72af11","line":71,"updated":"2015-02-13 16:37:52.000000000","message":"Should we at least namespace these names so that someone requesting a lock from X coordinator with name \u0027y\u0027 doesn\u0027t clash with a lock from coordinator Z (also with name \u0027y\u0027); perhaps prefix those \u0027y\u0027 with the class name that the lock is originating from (so the used name becomes \u0027Z:y\u0027 or something)? Since they all share the same class ACQUIRED_LOCKS and RELEASED_LOCKs dicts that might be appropriate to do right?","commit_id":"0d63398179916dffbde17807fb4a96e76e265667"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"049af10becf3aa9aa38eff514ca88acaee89c7f0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    ACQUIRED_LOCKS \u003d dict()"},{"line_number":69,"context_line":"    RELEASED_LOCKS \u003d weakref.WeakValueDictionary()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __init__(self, lockclass, name, *args, **kwargs):"},{"line_number":72,"context_line":"        super(SharedWeakLockHelper, self).__init__(name)"},{"line_number":73,"context_line":"        self.acquired \u003d False"},{"line_number":74,"context_line":"        self._newlock \u003d lambda: lockclass("}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_060f992f","line":71,"in_reply_to":"da86d52c_2b72af11","updated":"2015-02-27 10:33:30.000000000","message":"Right we need a namespace here, the classname won\u0027t work because if you have two mysql coordinator on two differents dabases it will get the same namespace but it shouldn\u0027t.\n\nI have used the coordinator url.","commit_id":"0d63398179916dffbde17807fb4a96e76e265667"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"46c7a444b4dc920339125269d3c8db34e8ec7f61","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    LOCKS_LOCK \u003d threading.Lock()"},{"line_number":105,"context_line":"    ACQUIRED_LOCKS \u003d dict()"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self, lockclass, name, *args, **kwargs):"},{"line_number":108,"context_line":"        super(WeakLockHelper, self).__init__(name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_4b48c38a","line":105,"updated":"2015-02-13 16:39:34.000000000","message":"Same namespace question for this one I think to.","commit_id":"0d63398179916dffbde17807fb4a96e76e265667"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"049af10becf3aa9aa38eff514ca88acaee89c7f0","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    \"\"\""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    LOCKS_LOCK \u003d threading.Lock()"},{"line_number":105,"context_line":"    ACQUIRED_LOCKS \u003d dict()"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __init__(self, lockclass, name, *args, **kwargs):"},{"line_number":108,"context_line":"        super(WeakLockHelper, self).__init__(name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba7be1f8_2ba9c824","line":105,"in_reply_to":"da86d52c_4b48c38a","updated":"2015-02-27 10:33:30.000000000","message":"Done","commit_id":"0d63398179916dffbde17807fb4a96e76e265667"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"a35bcc95c8ec3cef16c1bb27f7d01151382a7c0b","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def release(self):"},{"line_number":94,"context_line":"        with self.LOCKS_LOCK:"},{"line_number":95,"context_line":"            l \u003d self.ACQUIRED_LOCKS.pop(self._lock_key)"},{"line_number":96,"context_line":"            l.release()"},{"line_number":97,"context_line":"            self.RELEASED_LOCKS[self._lock_key] \u003d l"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_dfa79cbb","line":95,"updated":"2015-03-02 22:50:32.000000000","message":"Should this pop after the release() works out; instead of before?\n\nThat way if l.release() blows up the lock isn\u0027t gone forever. Is that better behavior?","commit_id":"3d01a84dd43f470d849c223bd27cee32fc82dcec"}],"tooz/tests/test_coordination.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2fb6ae175ae38a850eba82419f6da2f6b12bddb1","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        self.assertEqual(False, lock2.acquire(blocking\u003dFalse))"},{"line_number":617,"context_line":"        lock.release()"},{"line_number":618,"context_line":"        self.assertEqual(True, lock2.acquire(blocking\u003dTrue))"},{"line_number":619,"context_line":"        lock2.release()"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    @staticmethod"},{"line_number":622,"context_line":"    def _get_random_uuid():"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_ef451544","line":619,"updated":"2015-02-13 09:23:46.000000000","message":"This should be in a different patch I think.","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"0c5bf764de06efc1dad300e943524a2e02acd7c9","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        self.assertEqual(False, lock2.acquire(blocking\u003dFalse))"},{"line_number":617,"context_line":"        lock.release()"},{"line_number":618,"context_line":"        self.assertEqual(True, lock2.acquire(blocking\u003dTrue))"},{"line_number":619,"context_line":"        lock2.release()"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    @staticmethod"},{"line_number":622,"context_line":"    def _get_random_uuid():"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_5eb25107","line":619,"in_reply_to":"da86d52c_ef451544","updated":"2015-02-13 11:35:28.000000000","message":"Done","commit_id":"bcc8c0a32c9ec48573f6d4c9263d78d66f9cb699"}]}
