)]}'
{"tooz/drivers/etcd.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0b22a3e134e51bcb2c815e74b24795a88ababf68","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(EtcdLock, self).__init__(name)"},{"line_number":29,"context_line":"        self.client \u003d client"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def acquire(self, ttl\u003d600, acquire_timeout\u003d60):"},{"line_number":32,"context_line":"        try:"},{"line_number":33,"context_line":"            self.lock \u003d self.client.get_lock(self.name, ttl\u003dttl)"},{"line_number":34,"context_line":"            self.lock.acquire(timeout\u003dacquire_timeout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_5dbeb200","line":31,"updated":"2015-02-02 12:23:56.000000000","message":"That does not respect the standard signature of the function.\n\nBetter passes the option in the URL – at least for now.","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"daa4d5881b924f1198555f5562c455b44c373051","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        return self.lock"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def release(self):"},{"line_number":40,"context_line":"        self.lock.release()"},{"line_number":41,"context_line":"        return True"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_167a5888","line":40,"updated":"2015-02-02 14:03:36.000000000","message":"self.lock could be None.\n\nMaybe you can create self.lock  in  __init__ ?","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0b22a3e134e51bcb2c815e74b24795a88ababf68","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def _start(self):"},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            self.client \u003d self.get_client()"},{"line_number":54,"context_line":"            self.client.machines"},{"line_number":55,"context_line":"        except etcd.EtcdException as e:"},{"line_number":56,"context_line":"            raise coordination.ToozConnectionError(utils.exception_message(e))"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_5d55d2c4","line":54,"updated":"2015-02-02 12:23:56.000000000","message":"Does that do anything?","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"f3489245c40bfcf191bba935d4b35e261f919729","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def _start(self):"},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            self.client \u003d self.get_client()"},{"line_number":54,"context_line":"            self.client.machines"},{"line_number":55,"context_line":"        except etcd.EtcdException as e:"},{"line_number":56,"context_line":"            raise coordination.ToozConnectionError(utils.exception_message(e))"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b00df992","line":54,"in_reply_to":"da86d52c_5d55d2c4","updated":"2015-02-02 21:44:02.000000000","message":"yes, unfortunately :(.\n\nWe verify on driver init that we cannot create a driver with an invalid url. This etcd client lib doesnt perform any kind of connection to etcd until you request an operation. This is the most straightforward operation I could find on the api...","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"438defe2c79596daf0f9f6cad08f70d8380b4867","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        return etcd.Client(host\u003dself.host,"},{"line_number":60,"context_line":"                             port\u003dself.port,"},{"line_number":61,"context_line":"                             protocol\u003dself.protocol)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def get_lock(self, name):"},{"line_number":65,"context_line":"        return EtcdLock(name, self.get_client())"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_56b690da","line":62,"updated":"2015-02-02 14:12:46.000000000","message":"I think the etcd client should not be exposed to the user. The etcd client should be created in _start().","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":7450,"name":"Yassine Lamgarchal","email":"yassine.lamgarchal@redhat.com","username":"yassine.lamgarchal"},"change_message_id":"438defe2c79596daf0f9f6cad08f70d8380b4867","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def get_lock(self, name):"},{"line_number":65,"context_line":"        return EtcdLock(name, self.get_client())"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @staticmethod"},{"line_number":68,"context_line":"    def watch_join_group(group_id, callback):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_369afc63","line":65,"updated":"2015-02-02 14:12:46.000000000","message":"Maybe you could use self.client  instead of creating a new client at each call.","commit_id":"f51d534df80e27c8d121770190319f6c47567ef8"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4f35aefbae8c38d70e5bd8344706c71190b49656","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.response \u003d resp"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __str__(self):"},{"line_number":40,"context_line":"        return \u0027Unsuccessful response code (%d) received.\u0027 % resp.status_code"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class _Client(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_1815b5e4","line":40,"updated":"2015-02-04 15:54:16.000000000","message":"self.response.status_code?","commit_id":"a281d40c59a621cd11bb2a23da4c468e1b88eda6"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4f35aefbae8c38d70e5bd8344706c71190b49656","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                waitlist \u003d self.list_queue(lock_path, True, True)[\u0027node\u0027][\u0027nodes\u0027]"},{"line_number":109,"context_line":"            except _ClientResponseException as e:"},{"line_number":110,"context_line":"                self.release_lock(lock_name, my_index)"},{"line_number":111,"context_line":"                raise e"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            if waitlist[0][\u0027createdIndex\u0027] \u003d\u003d my_index:"},{"line_number":114,"context_line":"                # The lock is ours"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_588f2d2a","line":111,"updated":"2015-02-04 15:54:16.000000000","message":"Just \u0027raise\u0027 is fine (raising just \u0027e\u0027 loses the original stacktrace and replaces it with another which can be useful in debugging to have the original one...)","commit_id":"a281d40c59a621cd11bb2a23da4c468e1b88eda6"}]}
