)]}'
{"trove/taskmanager/models.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"bff366112a9de92ef2fa159561963388a4211d1e","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        # if anything fails after this point, recovery is futile"},{"line_number":965,"context_line":"        self._attach_volume(recover_func\u003dself._fail)"},{"line_number":966,"context_line":"        self._resize_fs(recover_func\u003dself._fail)"},{"line_number":967,"context_line":"        self._mount_volume(recover_func\u003dself._fail)"},{"line_number":968,"context_line":"        self.instance.restart()"},{"line_number":969,"context_line":"        LOG.debug(_(\"end _resize_active_volume for id: %(id)s\") % {"},{"line_number":970,"context_line":"                  \u0027id\u0027: self.instance.id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BaRQ%3D","line":967,"updated":"2014-01-27 08:27:14.000000000","message":"do u anticipate anyone calling these things and passing a different recover_func in? The only reason i say that is cuz it might be just as expressive to define the recovery func within the decorator \n\n@try_recover(func\u003dself._fail)... \n\nbut if self._mount_volume (and the others) will be called with other recovery_func\u0027s , i can see the need for passing that down.","commit_id":"dc0c4d7c094219c3a38df115efb88b44a870e06c"},{"author":{"_account_id":4954,"name":"Paul Marshall","email":"paul.marshall@rackspace.com","username":"paulvmarshall"},"change_message_id":"d0301fdfa663b649501c68160319a5e75e9592de","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        # if anything fails after this point, recovery is futile"},{"line_number":965,"context_line":"        self._attach_volume(recover_func\u003dself._fail)"},{"line_number":966,"context_line":"        self._resize_fs(recover_func\u003dself._fail)"},{"line_number":967,"context_line":"        self._mount_volume(recover_func\u003dself._fail)"},{"line_number":968,"context_line":"        self.instance.restart()"},{"line_number":969,"context_line":"        LOG.debug(_(\"end _resize_active_volume for id: %(id)s\") % {"},{"line_number":970,"context_line":"                  \u0027id\u0027: self.instance.id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BY4E%3D","line":967,"in_reply_to":"AAAAUH%2F%2BaRQ%3D","updated":"2014-01-27 13:18:06.000000000","message":"Yes. In some cases (unmount/detach/extend) we want the recovery func to actually try to recover (and each do slightly different things), and for these (attach/resize/mount) we just want to set the service status to failed. I also could imagine other places where this pattern could be used, and I\u0027d imagine the recovery function would often be quite different.","commit_id":"dc0c4d7c094219c3a38df115efb88b44a870e06c"}]}
