)]}'
{"nova/context.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea50293d899fbb9d862ad397796cf0bfb5d41a89","unresolved":false,"context_lines":[{"line_number":395,"context_line":"    yield cctxt"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"def scatter_gather_cells(context, cell_mappings, timeout, fn, *args, **kwargs):"},{"line_number":399,"context_line":"    \"\"\"Target cells in parallel and return their results."},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    The first parameter in the signature of the function to call for each cell"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f4e5783_7a984a1a","line":398,"range":{"start_line":398,"start_character":4,"end_line":398,"end_character":24},"updated":"2017-10-12 10:51:59.000000000","message":"What an odd choice of function name, heh","commit_id":"3cc3cc453dc16e22365bea597c1be5bb0be57aeb"}],"nova/tests/unit/test_context.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"eb11c6ab6ab80edaaabc415efd4b7280694d7727","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        # NOTE(melwitt): This only works without the SpawnIsSynchronous fixture"},{"line_number":327,"context_line":"        # because when the spawn is treated as synchronous and the thread"},{"line_number":328,"context_line":"        # function is called immediately, it will occur inside the target_cell"},{"line_number":329,"context_line":"        # context manager scope when it wouldn\u0027t with a real spawn."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Assert that InstanceList.get_by_filters was called before the"},{"line_number":332,"context_line":"        # target_cell context manager exited."}],"source_content_type":"text/x-python","patch_set":2,"id":"7f515b1d_088bf967","line":329,"updated":"2017-10-09 23:27:01.000000000","message":"I\u0027m concerned this is susceptible to timing failures in CI under load. But so far I couldn\u0027t come up with a better way to test this. I wanted to test that the thread function was called inside the target_cell scope, but when we use SpawnIsSynchronous, that is also true without the bug fix even though it wouldn\u0027t be in real life.","commit_id":"17c85d07becf1e9d64c60051a7eade681892fafa"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3fa4caab1fe663d25a01e201bd85f382e6161b3d","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        # NOTE(melwitt): This only works without the SpawnIsSynchronous fixture"},{"line_number":327,"context_line":"        # because when the spawn is treated as synchronous and the thread"},{"line_number":328,"context_line":"        # function is called immediately, it will occur inside the target_cell"},{"line_number":329,"context_line":"        # context manager scope when it wouldn\u0027t with a real spawn."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Assert that InstanceList.get_by_filters was called before the"},{"line_number":332,"context_line":"        # target_cell context manager exited."}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_286a3580","line":329,"updated":"2017-10-09 23:34:18.000000000","message":"Please see my comment on PS2.","commit_id":"3081752d9d2a0538030d101c3266051f0519a72f"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"7c0c5e878d1a00fed90652ffafb6859fb241d3e6","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        # NOTE(melwitt): This only works without the SpawnIsSynchronous fixture"},{"line_number":327,"context_line":"        # because when the spawn is treated as synchronous and the thread"},{"line_number":328,"context_line":"        # function is called immediately, it will occur inside the target_cell"},{"line_number":329,"context_line":"        # context manager scope when it wouldn\u0027t with a real spawn."},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Assert that InstanceList.get_by_filters was called before the"},{"line_number":332,"context_line":"        # target_cell context manager exited."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f4e5783_8299ab20","line":329,"in_reply_to":"7f515b1d_286a3580","updated":"2017-10-10 09:43:23.000000000","message":"Thinking about it more, it seems like using the real green threads isn\u0027t susceptible to timing failures in a CI environment because scatter_gather_cells adds green threads to a list and then waits for them before proceeding. So I think this is actually okay.\n\nI had been concerned we could somehow get to asserting these things before the green thread results came back, but we track how many we expect (based on number of green threads) and then wait for them before returning. Hence, \"scatter gather\" ... duh (to myself).","commit_id":"3081752d9d2a0538030d101c3266051f0519a72f"}]}
