)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"4218462788ab2e9d8a28ff05cce91e7661c4a9f8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"monkey patched by eventlet."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic7ef2934bfa0159e77ab8706bf669011a100f188"},{"line_number":14,"context_line":"Close-Bug: 1401335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a961159_e0e558a4","line":14,"updated":"2015-01-08 04:03:01.000000000","message":"Please fix the bug link.","commit_id":"00811e5f5d83ad0411537018de4cfd17497cdf1a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"85e21ff4215d90336326ff99258e9e2b3c196858","unresolved":false,"context_lines":[{"line_number":11,"context_line":"monkey patched by eventlet."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic7ef2934bfa0159e77ab8706bf669011a100f188"},{"line_number":14,"context_line":"Close-Bug: 1401335"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_0cf9b37f","line":14,"updated":"2015-01-08 15:01:28.000000000","message":"\u0027Closes-Bug\u0027 here.","commit_id":"98e7982a6b6224d8172c6693ab262a3accb8f632"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"ebe31d742d9970e051375a334dcd0b3ba801093c","unresolved":false,"context_lines":[{"line_number":670,"context_line":"                    # The exception here most likely related to the existing"},{"line_number":671,"context_line":"                    # watcher or mapper and less likely to be VolumeNotFound."},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"                    msg \u003d (_(\"ImageBusy error raised while deleting rbd \""},{"line_number":674,"context_line":"                             \"volume. This may have been caused by a \""},{"line_number":675,"context_line":"                             \"connection from a client that has crashed and, \""},{"line_number":676,"context_line":"                             \"if so, may be resolved by retrying the delete \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_80e9f4e4","line":673,"updated":"2015-01-08 03:34:22.000000000","message":"This message here is no longer true at least for some cases.  If using CLI is the workaround we are going to use, please change the message and raise differnt exception below.","commit_id":"00811e5f5d83ad0411537018de4cfd17497cdf1a"},{"author":{"_account_id":6880,"name":"Alan Jiang","email":"ajiang@linux.vnet.ibm.com","username":"ajiang"},"change_message_id":"e27b3a8dcf66ef975942a8a12273c8b90b1e7035","unresolved":false,"context_lines":[{"line_number":670,"context_line":"                    # The exception here most likely related to the existing"},{"line_number":671,"context_line":"                    # watcher or mapper and less likely to be VolumeNotFound."},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"                    msg \u003d (_(\"ImageBusy error raised while deleting rbd \""},{"line_number":674,"context_line":"                             \"volume. This may have been caused by a \""},{"line_number":675,"context_line":"                             \"connection from a client that has crashed and, \""},{"line_number":676,"context_line":"                             \"if so, may be resolved by retrying the delete \""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_60c5e85a","line":673,"in_reply_to":"3a961159_80e9f4e4","updated":"2015-01-08 03:36:18.000000000","message":"I think you are right. Let me fix that in the next patch set.\nThanks.","commit_id":"00811e5f5d83ad0411537018de4cfd17497cdf1a"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"ae661ad9cd9d7dadb097685ee5750979b0f02c5f","unresolved":false,"context_lines":[{"line_number":660,"context_line":""},{"line_number":661,"context_line":"                args \u003d [\u0027rbd\u0027, \u0027--pool\u0027,"},{"line_number":662,"context_line":"                        self.configuration.rbd_pool,"},{"line_number":663,"context_line":"                        \u0027rm\u0027, volume_name]"},{"line_number":664,"context_line":"                args.extend(self._ceph_args())"},{"line_number":665,"context_line":"                try:"},{"line_number":666,"context_line":"                    self._try_execute(*args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_1b2655ce","line":663,"updated":"2015-01-08 05:41:58.000000000","message":"Why spawn a child RBD process? This breaks error handling which makes me extremely uncomfortable.\n\nI initially went down this path by spawning delete_volume as a new thread, which worked perfectly and kept error handling.\n - Renamed delete_volume to _delete_volume and made a new delete_volume that used an eventlet thread to spawn _delete_volume in a new thread.\n   - http://eventlet.net/doc/threading.html\n\nI trashed this work as it was not suitable for production use, creating DoS security vulnerability.\n\nWe cannot just fork rbd delete commands without limit, they consume significant CPU resources.\nThis change also implements such a Denial of Service.","commit_id":"98e7982a6b6224d8172c6693ab262a3accb8f632"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"ae661ad9cd9d7dadb097685ee5750979b0f02c5f","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                        \u0027rm\u0027, volume_name]"},{"line_number":664,"context_line":"                args.extend(self._ceph_args())"},{"line_number":665,"context_line":"                try:"},{"line_number":666,"context_line":"                    self._try_execute(*args)"},{"line_number":667,"context_line":"                except Exception:"},{"line_number":668,"context_line":"                    # Since execute rbd cli directly, there is no clear"},{"line_number":669,"context_line":"                    # definition of return code unless parsing stderr."}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_9b19658a","line":666,"updated":"2015-01-08 05:41:58.000000000","message":"Will this command ever actually return an exception?\n\nAs far as I can tell it will always succeed regardless of return status of the process it executes.","commit_id":"98e7982a6b6224d8172c6693ab262a3accb8f632"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"1c9dfd763a0ce03b3a020b01554d0d297b22cb1f","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                    self._try_execute(*args)"},{"line_number":667,"context_line":"                except Exception:"},{"line_number":668,"context_line":"                    # Since execute rbd cli directly, there is no clear"},{"line_number":669,"context_line":"                    # definition of return code unless parsing stderr."},{"line_number":670,"context_line":"                    # The exception here most likely related to the existing"},{"line_number":671,"context_line":"                    # watcher or mapper and less likely to be VolumeNotFound."},{"line_number":672,"context_line":"                    msg \u003d (_(\"RBD cli execution failure: Failed to remove \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_5b553d1c","line":669,"updated":"2015-01-08 05:34:54.000000000","message":"Can we parse stderr here?  Not sure how far we can go from there but definitely better than a generic error message, thoughts?","commit_id":"98e7982a6b6224d8172c6693ab262a3accb8f632"}]}
