)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"b402601139e651345718fc64463413e5a8756f5e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"coordination: use tooz builtin heartbeat feature"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since a few versions, tooz can manage the heartbeat entirely internally. Let\u0027s"},{"line_number":10,"context_line":"use that feature to simplify Cinder life."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7fa654caf6620d410d4e297d3d8af2215e27ed12"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5ff73747_8aca6a4b","line":9,"range":{"start_line":9,"start_character":8,"end_line":9,"end_character":20},"updated":"2017-04-27 07:53:28.000000000","message":"It\u0027s better to be specific from which version tooz has started managing heartbeats internally.","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"38b3dbfd03a7785eae97d92d127bc429bcadfd3e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since its version 1.38.0, released on the beautiful 6 June 2016, tooz can"},{"line_number":10,"context_line":"manage the heartbeat entirely internally. In this patch, I enhance Cinder so it"},{"line_number":11,"context_line":"can use that feature to simplify its life."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The heart of this change can be questioned, as merely any bug as been reported"},{"line_number":14,"context_line":"on this code base as it has been said. But here I shall rise and those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5ff73747_9dee28eb","line":11,"updated":"2017-04-27 14:27:52.000000000","message":"Yet the documentation still has the old way of doing it: https://docs.openstack.org/developer/tooz/tutorial/coordinator.html","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b94adb1f26bc00c2ce258ddc3d1453a0229e774b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since its version 1.38.0, released on the beautiful 6 June 2016, tooz can"},{"line_number":10,"context_line":"manage the heartbeat entirely internally. In this patch, I enhance Cinder so it"},{"line_number":11,"context_line":"can use that feature to simplify its life."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The heart of this change can be questioned, as merely any bug as been reported"},{"line_number":14,"context_line":"on this code base as it has been said. But here I shall rise and those"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5ff73747_1d445873","line":11,"in_reply_to":"5ff73747_9dee28eb","updated":"2017-04-27 14:51:47.000000000","message":"Nice catch Gorka! I\u0027ve just send a patch to update this: https://review.openstack.org/460615","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"38b3dbfd03a7785eae97d92d127bc429bcadfd3e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Relying on the tooz heartbeat code instead of the custom crafted one by Cinder"},{"line_number":28,"context_line":"does not change the behavior, but floors this beast named \"technical debt\"."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I7fa654caf6620d410d4e297d3d8af2215e27ed12"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5ff73747_9d6bc883","line":30,"updated":"2017-04-27 14:27:52.000000000","message":"-1: This commit message needs to be redone, while it may be funny to read, it is inappropriate and not valid for merging.","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b94adb1f26bc00c2ce258ddc3d1453a0229e774b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Relying on the tooz heartbeat code instead of the custom crafted one by Cinder"},{"line_number":28,"context_line":"does not change the behavior, but floors this beast named \"technical debt\"."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I7fa654caf6620d410d4e297d3d8af2215e27ed12"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5ff73747_fd3d2cdd","line":30,"in_reply_to":"5ff73747_9d6bc883","updated":"2017-04-27 14:51:47.000000000","message":"This sounds really subjective, though I\u0027ll revert to the previous one then.","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"dc2871e5ebc1aba537ac00117afb6c6df96647fa","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"coordination: use tooz builtin heartbeat feature"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since version 1.38.0, tooz can manage the heartbeat entirely internally. In"},{"line_number":10,"context_line":"this patch, this feature is used to simplify Cinder\u0027s code."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7fa654caf6620d410d4e297d3d8af2215e27ed12"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff0f0b1f_e98a5e19","line":9,"range":{"start_line":9,"start_character":73,"end_line":9,"end_character":75},"updated":"2017-05-19 07:59:45.000000000","message":"nit: Please don\u0027t go over 72 characters as per guide lines [1].\n\n[1] https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"345e6cd71aab8cb5be0bb686c94df29bf8097127"}],"cinder/coordination.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a0fa52a7923d34b8df54d980000d820428a10cb9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027file://$state_path\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\u0027heartbeat\u0027,"},{"line_number":44,"context_line":"                 default\u003d1.0,"},{"line_number":45,"context_line":"                 help\u003d\u0027Number of seconds between heartbeats for distributed \u0027"},{"line_number":46,"context_line":"                      \u0027coordination.\u0027),"},{"line_number":47,"context_line":"    cfg.FloatOpt(\u0027initial_reconnect_backoff\u0027,"},{"line_number":48,"context_line":"                 default\u003d0.1,"},{"line_number":49,"context_line":"                 help\u003d\u0027Initial number of seconds to wait after failed \u0027"},{"line_number":50,"context_line":"                      \u0027reconnection.\u0027),"},{"line_number":51,"context_line":"    cfg.FloatOpt(\u0027max_reconnect_backoff\u0027,"},{"line_number":52,"context_line":"                 default\u003d60.0,"},{"line_number":53,"context_line":"                 help\u003d\u0027Maximum number of seconds between sequential \u0027"},{"line_number":54,"context_line":"                      \u0027reconnection retries.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_cf9bdb63","side":"PARENT","line":54,"range":{"start_line":43,"start_character":0,"end_line":54,"end_character":47},"updated":"2017-04-27 11:50:45.000000000","message":"Do we need to deprecate these for removal in the next release?","commit_id":"f7094f09bfaa77e55202b49262d0bd201b1b5c74"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3516ceb59937255a54c5861eb7405aa95e2189eb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027file://$state_path\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\u0027heartbeat\u0027,"},{"line_number":44,"context_line":"                 default\u003d1.0,"},{"line_number":45,"context_line":"                 help\u003d\u0027Number of seconds between heartbeats for distributed \u0027"},{"line_number":46,"context_line":"                      \u0027coordination.\u0027),"},{"line_number":47,"context_line":"    cfg.FloatOpt(\u0027initial_reconnect_backoff\u0027,"},{"line_number":48,"context_line":"                 default\u003d0.1,"},{"line_number":49,"context_line":"                 help\u003d\u0027Initial number of seconds to wait after failed \u0027"},{"line_number":50,"context_line":"                      \u0027reconnection.\u0027),"},{"line_number":51,"context_line":"    cfg.FloatOpt(\u0027max_reconnect_backoff\u0027,"},{"line_number":52,"context_line":"                 default\u003d60.0,"},{"line_number":53,"context_line":"                 help\u003d\u0027Maximum number of seconds between sequential \u0027"},{"line_number":54,"context_line":"                      \u0027reconnection retries.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_04ae4597","side":"PARENT","line":54,"range":{"start_line":43,"start_character":0,"end_line":54,"end_character":47},"in_reply_to":"5ff73747_6aa95522","updated":"2017-04-27 13:23:29.000000000","message":"Well *I* don\u0027t want to, but I think I\u0027ve been required to, so I\u0027m checking ...","commit_id":"f7094f09bfaa77e55202b49262d0bd201b1b5c74"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"972049ff55641d3c478aed7158330fedbffbcc1f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027file://$state_path\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\u0027heartbeat\u0027,"},{"line_number":44,"context_line":"                 default\u003d1.0,"},{"line_number":45,"context_line":"                 help\u003d\u0027Number of seconds between heartbeats for distributed \u0027"},{"line_number":46,"context_line":"                      \u0027coordination.\u0027),"},{"line_number":47,"context_line":"    cfg.FloatOpt(\u0027initial_reconnect_backoff\u0027,"},{"line_number":48,"context_line":"                 default\u003d0.1,"},{"line_number":49,"context_line":"                 help\u003d\u0027Initial number of seconds to wait after failed \u0027"},{"line_number":50,"context_line":"                      \u0027reconnection.\u0027),"},{"line_number":51,"context_line":"    cfg.FloatOpt(\u0027max_reconnect_backoff\u0027,"},{"line_number":52,"context_line":"                 default\u003d60.0,"},{"line_number":53,"context_line":"                 help\u003d\u0027Maximum number of seconds between sequential \u0027"},{"line_number":54,"context_line":"                      \u0027reconnection retries.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_6aa95522","side":"PARENT","line":54,"range":{"start_line":43,"start_character":0,"end_line":54,"end_character":47},"in_reply_to":"5ff73747_cf9bdb63","updated":"2017-04-27 12:48:05.000000000","message":"You want to deprecate values that are not used anymore? I don\u0027t see the point.","commit_id":"f7094f09bfaa77e55202b49262d0bd201b1b5c74"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a0fa52a7923d34b8df54d980000d820428a10cb9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.started \u003d False"},{"line_number":59,"context_line":"        self.prefix \u003d prefix"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def is_active(self):"},{"line_number":62,"context_line":"        return self.coordinator is not None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def start(self):"},{"line_number":65,"context_line":"        if self.started:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_cfe99bb7","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":43},"updated":"2017-04-27 11:50:45.000000000","message":"Interesting: in manila we require that the coordinator be started, not just that it exist.","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3516ceb59937255a54c5861eb7405aa95e2189eb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.started \u003d False"},{"line_number":59,"context_line":"        self.prefix \u003d prefix"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def is_active(self):"},{"line_number":62,"context_line":"        return self.coordinator is not None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def start(self):"},{"line_number":65,"context_line":"        if self.started:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_2497013d","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":43},"in_reply_to":"5ff73747_0a3891ec","updated":"2017-04-27 13:23:29.000000000","message":"Yeah, in the corresponding manila patch (which I\u0027ll gladly abandon if you want to submit one there) I got rid of this method.  And yeah, maybe it should be split into a separate patch.","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"972049ff55641d3c478aed7158330fedbffbcc1f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.started \u003d False"},{"line_number":59,"context_line":"        self.prefix \u003d prefix"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def is_active(self):"},{"line_number":62,"context_line":"        return self.coordinator is not None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def start(self):"},{"line_number":65,"context_line":"        if self.started:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_0a3891ec","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":43},"in_reply_to":"5ff73747_cfe99bb7","updated":"2017-04-27 12:48:05.000000000","message":"This is not used by anything actually, so I\u0027ve added a patch to remove it lol","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"ae56ab9dd3d3487a2a0e55203d6938b0b4d68fad","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027file://$state_path\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\u0027heartbeat\u0027,"},{"line_number":44,"context_line":"                 default\u003d1.0,"},{"line_number":45,"context_line":"                 help\u003d\u0027Number of seconds between heartbeats for distributed \u0027"},{"line_number":46,"context_line":"                      \u0027coordination.\u0027),"},{"line_number":47,"context_line":"    cfg.FloatOpt(\u0027initial_reconnect_backoff\u0027,"},{"line_number":48,"context_line":"                 default\u003d0.1,"},{"line_number":49,"context_line":"                 help\u003d\u0027Initial number of seconds to wait after failed \u0027"},{"line_number":50,"context_line":"                      \u0027reconnection.\u0027),"},{"line_number":51,"context_line":"    cfg.FloatOpt(\u0027max_reconnect_backoff\u0027,"},{"line_number":52,"context_line":"                 default\u003d60.0,"},{"line_number":53,"context_line":"                 help\u003d\u0027Maximum number of seconds between sequential \u0027"},{"line_number":54,"context_line":"                      \u0027reconnection retries.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a700b3ac","side":"PARENT","line":54,"range":{"start_line":43,"start_character":3,"end_line":54,"end_character":47},"updated":"2017-04-27 13:45:48.000000000","message":"No deprecation of these?  Not even a note or a comment about them just being removed?","commit_id":"b8975f06f9f49d699e2416f050440b856e5c4cea"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2f3af1930559ed7c08c1130e85b1f7cb4aad46a3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027backend_url\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027file://$state_path\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027The backend URL to use for distributed coordination.\u0027),"},{"line_number":43,"context_line":"    cfg.FloatOpt(\u0027heartbeat\u0027,"},{"line_number":44,"context_line":"                 default\u003d1.0,"},{"line_number":45,"context_line":"                 help\u003d\u0027Number of seconds between heartbeats for distributed \u0027"},{"line_number":46,"context_line":"                      \u0027coordination.\u0027),"},{"line_number":47,"context_line":"    cfg.FloatOpt(\u0027initial_reconnect_backoff\u0027,"},{"line_number":48,"context_line":"                 default\u003d0.1,"},{"line_number":49,"context_line":"                 help\u003d\u0027Initial number of seconds to wait after failed \u0027"},{"line_number":50,"context_line":"                      \u0027reconnection.\u0027),"},{"line_number":51,"context_line":"    cfg.FloatOpt(\u0027max_reconnect_backoff\u0027,"},{"line_number":52,"context_line":"                 default\u003d60.0,"},{"line_number":53,"context_line":"                 help\u003d\u0027Maximum number of seconds between sequential \u0027"},{"line_number":54,"context_line":"                      \u0027reconnection retries.\u0027),"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_dad27600","side":"PARENT","line":54,"range":{"start_line":43,"start_character":3,"end_line":54,"end_character":47},"in_reply_to":"5ff73747_a700b3ac","updated":"2017-04-27 14:14:16.000000000","message":"Done","commit_id":"b8975f06f9f49d699e2416f050440b856e5c4cea"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"38b3dbfd03a7785eae97d92d127bc429bcadfd3e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        member_id \u003d (self.prefix + self.agent_id).encode(\u0027ascii\u0027)"},{"line_number":67,"context_line":"        self.coordinator \u003d coordination.get_coordinator("},{"line_number":68,"context_line":"            cfg.CONF.coordination.backend_url, member_id)"},{"line_number":69,"context_line":"        self.coordinator.start(start_heart\u003dTrue)"},{"line_number":70,"context_line":"        self.started \u003d True"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def stop(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_7dfd9caf","line":69,"updated":"2017-04-27 14:27:52.000000000","message":"1: The heartbeat in Tooz doesn\u0027t do a reconnect like we do on L138 of the old code.","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c94bebc0dfc4ff55565c46fc1e45f154119e77f1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        member_id \u003d (self.prefix + self.agent_id).encode(\u0027ascii\u0027)"},{"line_number":67,"context_line":"        self.coordinator \u003d coordination.get_coordinator("},{"line_number":68,"context_line":"            cfg.CONF.coordination.backend_url, member_id)"},{"line_number":69,"context_line":"        self.coordinator.start(start_heart\u003dTrue)"},{"line_number":70,"context_line":"        self.started \u003d True"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def stop(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_0973524f","line":69,"in_reply_to":"5ff73747_18b466f1","updated":"2017-05-19 07:58:24.000000000","message":"That sounds kind of wishful thinking, have you actually tested this in Cinder?\n\nThe current code may not be the best way to do it if it\u0027s already available in TooZ, but at least it\u0027s tested.  And changing it for something that \"should\" work is not good engineering practice.\n\nLast time I looked at TooZ I didn\u0027t see the reconnection mechanism, and I\u0027m sure I missed it.  Could you point to the code there?","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b94adb1f26bc00c2ce258ddc3d1453a0229e774b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        member_id \u003d (self.prefix + self.agent_id).encode(\u0027ascii\u0027)"},{"line_number":67,"context_line":"        self.coordinator \u003d coordination.get_coordinator("},{"line_number":68,"context_line":"            cfg.CONF.coordination.backend_url, member_id)"},{"line_number":69,"context_line":"        self.coordinator.start(start_heart\u003dTrue)"},{"line_number":70,"context_line":"        self.started \u003d True"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def stop(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_18b466f1","line":69,"in_reply_to":"5ff73747_7dfd9caf","updated":"2017-04-27 14:51:47.000000000","message":"There is no need to reconnect, it\u0027s handled by drivers in tooz directly.\n(if it\u0027s not then it\u0027s a bug in tooz)","commit_id":"0d6d8547466d8f4a5b2318d53eb5ffb81798469b"}],"cinder/tests/unit/test_coordination.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a0fa52a7923d34b8df54d980000d820428a10cb9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        agent \u003d coordination.Coordinator()"},{"line_number":52,"context_line":"        agent.start()"},{"line_number":53,"context_line":"        self.assertTrue(get_coordinator.called)"},{"line_number":54,"context_line":"        self.assertTrue(crd.start.called)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_coordinator_stop(self, get_coordinator):"},{"line_number":57,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_2f647f49","line":54,"updated":"2017-04-27 11:50:45.000000000","message":"Add: self.assertTrue(agent.started) ?","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"972049ff55641d3c478aed7158330fedbffbcc1f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        agent \u003d coordination.Coordinator()"},{"line_number":52,"context_line":"        agent.start()"},{"line_number":53,"context_line":"        self.assertTrue(get_coordinator.called)"},{"line_number":54,"context_line":"        self.assertTrue(crd.start.called)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_coordinator_stop(self, get_coordinator):"},{"line_number":57,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_6a2cb5ab","line":54,"in_reply_to":"5ff73747_2f647f49","updated":"2017-04-27 12:48:05.000000000","message":"how is this related to this patch?","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3516ceb59937255a54c5861eb7405aa95e2189eb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        agent \u003d coordination.Coordinator()"},{"line_number":52,"context_line":"        agent.start()"},{"line_number":53,"context_line":"        self.assertTrue(get_coordinator.called)"},{"line_number":54,"context_line":"        self.assertTrue(crd.start.called)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def test_coordinator_stop(self, get_coordinator):"},{"line_number":57,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_64be29d6","line":54,"in_reply_to":"5ff73747_6a2cb5ab","updated":"2017-04-27 13:23:29.000000000","message":"I tend to do small code-coverage improvements in the same patch when I touch a unit test but of course it\u0027s valid to separate concerns and do that kind of change in another patch.  This review seemed like a good place to check that it\u0027s a good idea with others looking at this code.","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"a0fa52a7923d34b8df54d980000d820428a10cb9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.assertIsNotNone(agent.coordinator)"},{"line_number":62,"context_line":"        agent.stop()"},{"line_number":63,"context_line":"        self.assertTrue(crd.stop.called)"},{"line_number":64,"context_line":"        self.assertIsNone(agent.coordinator)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_coordinator_lock(self, get_coordinator):"},{"line_number":67,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_2f7b5ff5","line":64,"updated":"2017-04-27 11:50:45.000000000","message":"Add: self.assertFalse(agent.started) ?","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"3516ceb59937255a54c5861eb7405aa95e2189eb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.assertIsNotNone(agent.coordinator)"},{"line_number":62,"context_line":"        agent.stop()"},{"line_number":63,"context_line":"        self.assertTrue(crd.stop.called)"},{"line_number":64,"context_line":"        self.assertIsNone(agent.coordinator)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_coordinator_lock(self, get_coordinator):"},{"line_number":67,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_e4d11925","line":64,"in_reply_to":"5ff73747_0a21b1b0","updated":"2017-04-27 13:23:29.000000000","message":"ditto","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"972049ff55641d3c478aed7158330fedbffbcc1f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.assertIsNotNone(agent.coordinator)"},{"line_number":62,"context_line":"        agent.stop()"},{"line_number":63,"context_line":"        self.assertTrue(crd.stop.called)"},{"line_number":64,"context_line":"        self.assertIsNone(agent.coordinator)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_coordinator_lock(self, get_coordinator):"},{"line_number":67,"context_line":"        crd \u003d get_coordinator.return_value"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_0a21b1b0","line":64,"in_reply_to":"5ff73747_2f7b5ff5","updated":"2017-04-27 12:48:05.000000000","message":"how is this related to this patch?","commit_id":"5823f4ce1a639831334c1136d0faec08532c912c"}]}
