)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26498,"name":"liumengke","email":"liumk@rc.inesa.com","username":"liumk"},"change_message_id":"ac3d9daf314702b86ad2d2fcf17505a690c75d06","unresolved":false,"context_lines":[{"line_number":11,"context_line":"we just return without final check, and this may lead to issue"},{"line_number":12,"context_line":"that nova is checking dirty data."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch incrases the timeout value first, then check the status"},{"line_number":15,"context_line":"of server at last if time out and raise an assertion to let us"},{"line_number":16,"context_line":"consider increase the loop time."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f436f4f_e5bfa7a7","line":14,"range":{"start_line":14,"start_character":11,"end_line":14,"end_character":19},"updated":"2017-08-15 09:10:25.000000000","message":"s/incrases/increases/","commit_id":"3f17fb528f15f63efa822f389ed47eb8c6e7c2fc"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e78a0126aee0ff8de7ebc000fa48bb8b0f07f7cf","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_d33a4dca","line":75,"updated":"2017-08-14 06:56:29.000000000","message":"I\u0027m confused: Once \u0027status\u0027 is \u003d\u003d from_status, under what circumstances would it not be from_status the second time round the loop?\n\nYou mention \"other attribute\" above, but we aren\u0027t looking at any of them in this loop, so how are they involved?","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c5d9168b9ba8e08efcc34135edfce6824b434570","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_ae48805b","line":75,"in_reply_to":"9f436f4f_13b575cd","updated":"2017-08-14 07:39:13.000000000","message":"in the bugzilla I posted my guess:\n\nI am *guessing* that between those 2 lines , instance is ACTIVE but the host not changed yet\nso we can change the loop time but better to add another check ?\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2791\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2927\n\n\nnot sure this is normal case or my guess is incorrect because the db write process will block the reader, so I just look into the code\n\nmaybe we can also print the output of each api server get to do more check to ensure the info we got is *really* different ...","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d60c70f5921692a482dcfe4b353125f807c9cc69","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_cfd4c222","line":75,"in_reply_to":"9f436f4f_2426eccf","updated":"2017-08-15 07:44:00.000000000","message":"I am not sure whether it\u0027s reasonable to wait for the host name , as we are asserting in line 1627 (see below)\nit doesn\u0027t make sense to wait here...\n\nI agree with Chris that increase the loop time might be a good way to proceed","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"394ad566acb5abf2d49e32b2b5783011e2dfe872","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_4f590933","line":75,"in_reply_to":"9f436f4f_2426eccf","updated":"2017-08-14 13:19:21.000000000","message":"Ohh one more thing. This _wait_for_stat_change() is not the one called from the ServerMovingTest class. That is in the InstanceHelperMixin class.","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"959acd1200f88d84991bab4cc54c578ed74023cd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_13b575cd","line":75,"in_reply_to":"9f436f4f_337cf970","updated":"2017-08-14 07:16:37.000000000","message":"Yes, I understand what the code is doing. What I didn\u0027t understand is how/why the data in server would be different the second time around.\n\nI think you\u0027re saying that the server can become \u0027ACTIVE\u0027 but not yet have some its other data updated. Do we know that\u0027s the case (and it is normal) or are we simply being cautious?","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4bcd207c0623adac9ca4b70db7671c259e2a3b59","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_e9cd6266","line":75,"in_reply_to":"9f436f4f_ae48805b","updated":"2017-08-14 08:29:26.000000000","message":"I don\u0027t think that\u0027s the case. I think the loop is reaching it\u0027s end, and thus the server is returned, not yet having reached the desired status.\n\nI think a better fix might for the test to fail if the loop reaches it\u0027s end without the tested condition being met.\n\nAnd raising either the sleep or the number of loops.","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"68546582f4cb8d6e839352710f96db6f2805012e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_337cf970","line":75,"in_reply_to":"9f436f4f_d33a4dca","updated":"2017-08-14 07:01:35.000000000","message":"sorry for confusion\n\nwhat I am doing is line 69 will re-check the status again when first find finish (find will be 1 after that)\nit\u0027s very likely the status will be same so we got 2 hit if second check return same value\n\nif we got 2 times same status, we can think it\u0027s stable status now and we provide some time (one sleep) to make nova able to sync other fields such as host, then we will start the check","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a3a915df26d92bfb13cf0b9286a5560ee8fd95e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # status change, so we need double check again"},{"line_number":73,"context_line":"            # to give one more chance to let nova update"},{"line_number":74,"context_line":"            # those fields"},{"line_number":75,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":76,"context_line":"                find +\u003d 1"},{"line_number":77,"context_line":"            else:"},{"line_number":78,"context_line":"                find \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_2426eccf","line":75,"in_reply_to":"9f436f4f_e9cd6266","updated":"2017-08-14 13:13:53.000000000","message":"I wouldn\u0027t go with a retry. I suggest to wait for both the status and the host as well to avoid the test_evacuate failure.\nSomething like the above instead of https://github.com/openstack/nova/blob/master/nova/tests/functional/test_servers.py#L1615-L1616\nserver \u003d self._wait_for_server_parameter(self.api, server, {\u0027status\u0027: \u0027ACTIVE\u0027,\u0027OS-EXT-SRV-ATTR:host\u0027:dest_hostname})","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d60c70f5921692a482dcfe4b353125f807c9cc69","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"        self.api.post_server_action("},{"line_number":1625,"context_line":"            server[\u0027id\u0027], post)"},{"line_number":1626,"context_line":"        server \u003d self._wait_for_state_change(self.api, server, \u0027ACTIVE\u0027)"},{"line_number":1627,"context_line":"        self.assertEqual(dest_hostname, server[\u0027OS-EXT-SRV-ATTR:host\u0027])"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"        # Expect to have allocation and usages on both computes as the"},{"line_number":1630,"context_line":"        # source compute is still down"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_2f20ee47","line":1627,"updated":"2017-08-15 07:44:00.000000000","message":"here","commit_id":"99f6db1e98e4d384dfa53b716c7eb97e0c629a1a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb86ed22a372b814c3ce9d95d23cf9f5a787186f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            if server[\u0027status\u0027] !\u003d from_status:"},{"line_number":70,"context_line":"                break"},{"line_number":71,"context_line":"            time.sleep(.1)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # Finally, we still can\u0027t make the instance to be expected status"},{"line_number":74,"context_line":"        # let\u0027s raise exception to ease the trace of issue "},{"line_number":75,"context_line":"        if server[\u0027status\u0027] !\u003d from_status:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_8a96a83d","line":72,"updated":"2017-08-15 08:34:25.000000000","message":"This is still not the function that is called from the ServerMovingTests.test_evacuate(). That test does not inherit from this ServersTestBase class but inherit from InstanceHelperMixin that has a different _wait_for_state_change function.","commit_id":"3f17fb528f15f63efa822f389ed47eb8c6e7c2fc"}]}
