)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"0c85c149d062ae6e6746c678aec8ce8fa0c30d46","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                          instance\u003dinstance)"},{"line_number":1135,"context_line":"                return nwinfo"},{"line_number":1136,"context_line":"            return network_model.NetworkInfoAsyncWrapper(async_alloc)"},{"line_number":1137,"context_line":"        except Exception:"},{"line_number":1138,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1139,"context_line":"                LOG.exception(_(\u0027Instance failed network setup\u0027),"},{"line_number":1140,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPX%2F%2F%2BRw%3D","line":1137,"updated":"2013-06-04 20:40:32.000000000","message":"As far as I can tell, unless I\u0027m missing something with the async model, this try/except block will never get used.  It looks like exceptions in the virt layer was discussed on a previous patchset, and I tend to agree that the tradeoff of build time is worth moving exception handling down.","commit_id":"ab7b20e7af4d7f389a2009dcfbad7e1526cc06ad"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"74e0078a2c50e3484fca69a9ff566dfbbd523b1d","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                          instance\u003dinstance)"},{"line_number":1135,"context_line":"                return nwinfo"},{"line_number":1136,"context_line":"            return network_model.NetworkInfoAsyncWrapper(async_alloc)"},{"line_number":1137,"context_line":"        except Exception:"},{"line_number":1138,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1139,"context_line":"                LOG.exception(_(\u0027Instance failed network setup\u0027),"},{"line_number":1140,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPX%2F%2F%2BGs%3D","line":1137,"in_reply_to":"AAAAPX%2F%2F%2BRw%3D","updated":"2013-06-04 21:42:38.000000000","message":"Yeah, looks like this try/except can be removed.  And the try/except in _spawn() should cover this failure...  as long as its raised back up properly, yeah.  Note that libvirt still uses the legacy model, so the \u0027self._legacy_nw_info(network_info)\u0027 call in _spawn is what could actually trigger any exception during network alloc.","commit_id":"ab7b20e7af4d7f389a2009dcfbad7e1526cc06ad"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"e242c5b7967eae1068b6550a70ffc93b57e156eb","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                            \u0027for deleted instance\u0027)"},{"line_number":969,"context_line":"                    LOG.exception(msg, instance\u003dinstance)"},{"line_number":970,"context_line":"        except exception.UnexpectedTaskStateError as e:"},{"line_number":971,"context_line":"            actual_task_state \u003d e.kwargs.get(\u0027actual\u0027, None)"},{"line_number":972,"context_line":"            if actual_task_state \u003d\u003d \u0027deleting\u0027:"},{"line_number":973,"context_line":"                msg \u003d _(\u0027Instance was deleted during spawn.\u0027)"},{"line_number":974,"context_line":"                LOG.debug(msg, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPX%2F%2F7%2FM%3D","line":971,"updated":"2013-06-05 18:01:08.000000000","message":"Similar concern to below - shouldn\u0027t always wait for the async network create to finish and log any errors","commit_id":"4409c706c0b2c033023d326bae2d809019c7d9f9"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c8da123ef33a961ab5aa512b974ac8925e57592b","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                            \u0027for deleted instance\u0027)"},{"line_number":969,"context_line":"                    LOG.exception(msg, instance\u003dinstance)"},{"line_number":970,"context_line":"        except exception.UnexpectedTaskStateError as e:"},{"line_number":971,"context_line":"            actual_task_state \u003d e.kwargs.get(\u0027actual\u0027, None)"},{"line_number":972,"context_line":"            if actual_task_state \u003d\u003d \u0027deleting\u0027:"},{"line_number":973,"context_line":"                msg \u003d _(\u0027Instance was deleted during spawn.\u0027)"},{"line_number":974,"context_line":"                LOG.debug(msg, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPX%2F%2F738%3D","line":971,"in_reply_to":"AAAAPX%2F%2F7%2FM%3D","updated":"2013-06-05 18:32:50.000000000","message":"I think that I thought this one was okay because this raise would most likely be from setting the task_state to networking... thus it would be before the greenthread.  However, i\u0027m guessing this can be raised later.  Better to be safe than sorry, so will fix.","commit_id":"4409c706c0b2c033023d326bae2d809019c7d9f9"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"e242c5b7967eae1068b6550a70ffc93b57e156eb","unresolved":false,"context_lines":[{"line_number":977,"context_line":"            else:"},{"line_number":978,"context_line":"                raise"},{"line_number":979,"context_line":"        except Exception:"},{"line_number":980,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":981,"context_line":"            # try to re-schedule instance:"},{"line_number":982,"context_line":"            rescheduled \u003d self._reschedule_or_error(context, instance,"},{"line_number":983,"context_line":"                    exc_info, requested_networks, admin_password,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPX%2F%2F7%2FY%3D","line":980,"updated":"2013-06-05 18:01:08.000000000","message":"Doesn\u0027t not waiting for the async network create here mean that we risk leaving it running on this host, and then starting it again on the next one ?  Feels like it could lead to a nasty race condition.\n\nMaybe I\u0027m missing something but it seems like we should always wait and log any errors on this host before we go back to the scheduler,.","commit_id":"4409c706c0b2c033023d326bae2d809019c7d9f9"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"c8da123ef33a961ab5aa512b974ac8925e57592b","unresolved":false,"context_lines":[{"line_number":977,"context_line":"            else:"},{"line_number":978,"context_line":"                raise"},{"line_number":979,"context_line":"        except Exception:"},{"line_number":980,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":981,"context_line":"            # try to re-schedule instance:"},{"line_number":982,"context_line":"            rescheduled \u003d self._reschedule_or_error(context, instance,"},{"line_number":983,"context_line":"                    exc_info, requested_networks, admin_password,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAPX%2F%2F74M%3D","line":980,"in_reply_to":"AAAAPX%2F%2F7%2FY%3D","updated":"2013-06-05 18:32:50.000000000","message":"Nah, I think you\u0027re right.","commit_id":"4409c706c0b2c033023d326bae2d809019c7d9f9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d5edc73fd4aa58122100f931bb03d524ae538b48","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                raise exception.BuildAbortException("},{"line_number":981,"context_line":"                        instance_uuid\u003dinstance[\u0027uuid\u0027], reason\u003dmsg)"},{"line_number":982,"context_line":"            else:"},{"line_number":983,"context_line":"                raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":984,"context_line":"        except Exception:"},{"line_number":985,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":986,"context_line":"            # try to re-schedule instance:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPX%2F%2F7bU%3D","line":983,"updated":"2013-06-05 20:44:08.000000000","message":"Any reason we can\u0027t use excutils.save_and_reraise_exception()?","commit_id":"d63d14cb1c2cf87a40e2b4889dce0e87c8ec620b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7ba129504f3b66d4805a09dd54b9379fe00e3a16","unresolved":false,"context_lines":[{"line_number":980,"context_line":"                raise exception.BuildAbortException("},{"line_number":981,"context_line":"                        instance_uuid\u003dinstance[\u0027uuid\u0027], reason\u003dmsg)"},{"line_number":982,"context_line":"            else:"},{"line_number":983,"context_line":"                raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":984,"context_line":"        except Exception:"},{"line_number":985,"context_line":"            exc_info \u003d sys.exc_info()"},{"line_number":986,"context_line":"            # try to re-schedule instance:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAPX%2F%2F7aI%3D","line":983,"updated":"2013-06-05 20:45:09.000000000","message":"You uploaded PS14 while I was still reviewing PS13, so I\u0027ll restate: Any reason to not use save_and_reraise_exception()?","commit_id":"3a89638691b1e9eb167886793c7819be4fd8dc4f"}],"nova/network/model.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"5ded9618d209d1a6754a804ebece2ba0d2dad788","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        \"\"\"Wait for async call to finish.\"\"\""},{"line_number":499,"context_line":"        if self._gt is not None:"},{"line_number":500,"context_line":"            try:"},{"line_number":501,"context_line":"                self[:] \u003d self._gt.wait()"},{"line_number":502,"context_line":"            except Exception:"},{"line_number":503,"context_line":"                if do_raise:"},{"line_number":504,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPX%2F%2F7qA%3D","line":501,"updated":"2013-06-05 19:41:49.000000000","message":"self[:] ?  Typo, or code too magic for me to understand without a comment?","commit_id":"d63d14cb1c2cf87a40e2b4889dce0e87c8ec620b"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"ee2fff0bcb624a4646625a683eb0201ce9482337","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        \"\"\"Wait for async call to finish.\"\"\""},{"line_number":499,"context_line":"        if self._gt is not None:"},{"line_number":500,"context_line":"            try:"},{"line_number":501,"context_line":"                self[:] \u003d self._gt.wait()"},{"line_number":502,"context_line":"            except Exception:"},{"line_number":503,"context_line":"                if do_raise:"},{"line_number":504,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPX%2F%2F7b0%3D","line":501,"in_reply_to":"AAAAPX%2F%2F7qA%3D","updated":"2013-06-05 20:38:04.000000000","message":"I\u0027ll add a comment.  The object is actually subclassed from list.  So self[:] actually sets the list with the result...  Good question. :)","commit_id":"d63d14cb1c2cf87a40e2b4889dce0e87c8ec620b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d5edc73fd4aa58122100f931bb03d524ae538b48","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        \"\"\"Wait for async call to finish.\"\"\""},{"line_number":499,"context_line":"        if self._gt is not None:"},{"line_number":500,"context_line":"            try:"},{"line_number":501,"context_line":"                self[:] \u003d self._gt.wait()"},{"line_number":502,"context_line":"            except Exception:"},{"line_number":503,"context_line":"                if do_raise:"},{"line_number":504,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPX%2F%2F7aw%3D","line":501,"in_reply_to":"AAAAPX%2F%2F7qA%3D","updated":"2013-06-05 20:44:08.000000000","message":"Yeah, it\u0027s a slice assignment.  It\u0027s one of those standard features of Python that turns out to be little used in practice.","commit_id":"d63d14cb1c2cf87a40e2b4889dce0e87c8ec620b"}]}
