)]}'
{"nova/volume/manager.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"2fa71de0bb5f9fb14cb9b232ceb553e0ba9da655","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"import sys"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import sys"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"from nova import context"},{"line_number":46,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6R0%3D","line":43,"updated":"2011-10-27 13:59:52.000000000","message":"It\u0027s not necessary to import sys twice","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"f337fb26c01584c88d2a46b9d888f025403c98c1","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"import sys"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import sys"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"from nova import context"},{"line_number":46,"context_line":"from nova import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Rk%3D","line":43,"in_reply_to":"AAAACX%2F%2F6R0%3D","updated":"2011-10-27 14:20:07.000000000","message":"Done","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"2fa71de0bb5f9fb14cb9b232ceb553e0ba9da655","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Rw%3D","line":132,"updated":"2011-10-27 13:59:52.000000000","message":"It might be better to use the new utils.original_exception_raised context manager.\n\nwith utils.original_exception_raised():\n    self.db.volume_update(context, volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})\n    self._notify_vsa(context, volume_ref, \u0027error\u0027)","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"6b354fafaf94a29f4a2841d6cc79e659acfe8c82","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Ac%3D","line":132,"in_reply_to":"AAAACX%2F%2F6PY%3D","updated":"2011-10-28 09:33:34.000000000","message":"Let\u0027s say, some code in db.volume_update raises Exception(\u0027bb\u0027). In that case raise_original_exception will work like this:\n\ntry:\n    raise Exception(\u0027aa\u0027)\nexcept:\n    exc_info \u003d sys.exc_info()\n    try:\n        raise Exception(\u0027bb\u0027)\n    finally:\n        raise exc_info[0], exc_info[1], exc_info[2]\n\nAnd only Exception(\u0027aa\u0027) will be propagated while noone will ever see any trace of Exception(\u0027bb\u0027). This is bad. That\u0027s what I\u0027m talking about.","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"1b53b3f2696885ec13d3b7701cb165b99e9fc860","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Qg%3D","line":132,"in_reply_to":"AAAACX%2F%2F6Q8%3D","updated":"2011-10-27 14:49:32.000000000","message":"No errors should disappear silently.\n\nIn this exact case self.db.volume_update can raise exception that will be silently discarded by raise_original_exception, but will be thrown up by this code.\n\nSo we may be should change raise_original_exception somehow to at least log exception that can be raised in it\u0027s context.","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"f2b6a0f1f80a07534eb7c0f8e378ac9ffbb9aae8","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6PY%3D","line":132,"in_reply_to":"AAAACX%2F%2F6Qg%3D","updated":"2011-10-27 15:49:20.000000000","message":"Again, raise_original_exception does what you want.\n\nSeriously, try it out and see for yourself.","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"a07507743082155874ffc5f4a6148f6a5a08f48c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Q8%3D","line":132,"in_reply_to":"AAAACX%2F%2F6Rc%3D","updated":"2011-10-27 14:42:53.000000000","message":"The whole point of raise_original_exception() is to save the original exception and raise it again at the end. It\u0027s to fix the exact problem you\u0027re trying to fix.\n\nWhy do you think it\u0027s incorrect?","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"f337fb26c01584c88d2a46b9d888f025403c98c1","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self.db.volume_update(context,"},{"line_number":130,"context_line":"                                  volume_ref[\u0027id\u0027], {\u0027status\u0027: \u0027error\u0027})"},{"line_number":131,"context_line":"            self._notify_vsa(context, volume_ref, \u0027error\u0027)"},{"line_number":132,"context_line":"            raise exc_info[0], exc_info[1], exc_info[2]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        now \u003d utils.utcnow()"},{"line_number":135,"context_line":"        self.db.volume_update(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F6Rc%3D","line":132,"in_reply_to":"AAAACX%2F%2F6Rw%3D","updated":"2011-10-27 14:20:07.000000000","message":"I\u0027m not sure that this context manager is correct since exception that can occur during db or vsa management will disappear silently.","commit_id":"1d797f50ae62a017d89f3dd353ef0a5435a36587"}]}
