)]}'
{"dragonflow/common/utils.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"d3a4bbf25192e8c8b1ae0f3eb2b7319e000b04ec","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def daemonize(self, run):"},{"line_number":33,"context_line":"        if self.is_daemonize:"},{"line_number":34,"context_line":"            LOG.error(_LE(\"all ready daemonized\"))"},{"line_number":35,"context_line":"            return"},{"line_number":36,"context_line":"        self.thread \u003d self.pool.spawn_n(run)"},{"line_number":37,"context_line":"        eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_7b42ec69","line":34,"updated":"2016-02-05 15:05:03.000000000","message":"should be \"already daemonized\"","commit_id":"b831f842df0c2e99b6517f89c16274dee9f54cd6"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"d3a4bbf25192e8c8b1ae0f3eb2b7319e000b04ec","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        return self.thread"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def stop(self):"},{"line_number":42,"context_line":"        if self.thread:"},{"line_number":43,"context_line":"            eventlet.greenthread.kill(self.thread)"},{"line_number":44,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_5b77f0d2","line":42,"updated":"2016-02-05 15:05:03.000000000","message":"better to also check is_daemonize","commit_id":"b831f842df0c2e99b6517f89c16274dee9f54cd6"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"d3a4bbf25192e8c8b1ae0f3eb2b7319e000b04ec","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    def stop(self):"},{"line_number":42,"context_line":"        if self.thread:"},{"line_number":43,"context_line":"            eventlet.greenthread.kill(self.thread)"},{"line_number":44,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_1b7df8b0","line":44,"updated":"2016-02-05 15:05:03.000000000","message":"set is_daemonize to False","commit_id":"b831f842df0c2e99b6517f89c16274dee9f54cd6"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"dc5d99fdc476c125b12e7c87e4f3c89dc8ec59ee","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        if self.is_daemonize:"},{"line_number":34,"context_line":"            LOG.error(_LE(\"already daemonized\"))"},{"line_number":35,"context_line":"            return"},{"line_number":36,"context_line":"        self.thread \u003d self.pool.spawn_n(run)"},{"line_number":37,"context_line":"        eventlet.sleep(0)"},{"line_number":38,"context_line":"        self.is_daemonize \u003d True"},{"line_number":39,"context_line":"        return self.thread"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def stop(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a5ae5dd_ec4a7b54","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":32},"updated":"2016-02-07 07:01:35.000000000","message":"Consider changing the order of is_daemonize and spawn. That way, if the thread tries to read is_daemonize, there is no race condition.","commit_id":"eb78df0f6f1729dae12ec1627a03037d0219b0e3"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d560cec20015b007d8c8f5f8922cdb2dafd9df2d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        if self.is_daemonize:"},{"line_number":34,"context_line":"            LOG.error(_LE(\"already daemonized\"))"},{"line_number":35,"context_line":"            return"},{"line_number":36,"context_line":"        self.thread \u003d self.pool.spawn_n(run)"},{"line_number":37,"context_line":"        eventlet.sleep(0)"},{"line_number":38,"context_line":"        self.is_daemonize \u003d True"},{"line_number":39,"context_line":"        return self.thread"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def stop(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a5ae5dd_ac66c327","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":32},"in_reply_to":"5a5ae5dd_ec4a7b54","updated":"2016-02-07 08:36:21.000000000","message":"Yes will be moved to before the sleep \n\nIf we will need to support other threading module we should add a lock","commit_id":"eb78df0f6f1729dae12ec1627a03037d0219b0e3"}]}
