)]}'
{"taskflow/persistence/backends/impl_zookeeper.py":[{"author":{"_account_id":6648,"name":"Changbin Liu","email":"changbin.liu@gmail.com","username":"changbl"},"change_message_id":"53c80078b8d7f8f74e625df92572b84bcd511fb4","unresolved":false,"context_lines":[{"line_number":37,"context_line":"_prettify_failures \u003d functools.partial(k_utils.prettify_failures, limit\u003d1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class StorageTransactionFailure(exc.StorageFailure):"},{"line_number":41,"context_line":"    \"\"\"Storage failures that are caused by/reference a transaction failing.\"\"\""},{"line_number":42,"context_line":"    def __init__(self, message, transaction, cause\u003dNone):"},{"line_number":43,"context_line":"        super(StorageTransactionFailure, self).__init__(message, cause\u003dcause)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_e565e8af","line":40,"updated":"2014-07-23 20:45:39.000000000","message":"StorageTransactionFailure is a general exception relevant to zookeeper/kazoo backend.\n\nWhat about moving exception \"StorageTransactionFailure\" to kazoo_utils.py? Along with the exception raising part after \"if failures\". \n\nAlso, this way a bit duplicate code can be saved in this file.","commit_id":"4ef55cbde95522496faaa33c49f16adc28056068"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d9ae68bbeb863eec839b9ec4a971ac3c3ed9064b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"_prettify_failures \u003d functools.partial(k_utils.prettify_failures, limit\u003d1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class StorageTransactionFailure(exc.StorageFailure):"},{"line_number":41,"context_line":"    \"\"\"Storage failures that are caused by/reference a transaction failing.\"\"\""},{"line_number":42,"context_line":"    def __init__(self, message, transaction, cause\u003dNone):"},{"line_number":43,"context_line":"        super(StorageTransactionFailure, self).__init__(message, cause\u003dcause)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_c5e19dd1","line":40,"in_reply_to":"baada198_973a97c2","updated":"2014-07-24 17:45:04.000000000","message":"Will adjust this, think your idea about a single exception from kazoo_utils makes the best sense; posting review soon.","commit_id":"4ef55cbde95522496faaa33c49f16adc28056068"},{"author":{"_account_id":6648,"name":"Changbin Liu","email":"changbin.liu@gmail.com","username":"changbl"},"change_message_id":"ca86a8e3fec4d3bd8ef1f716e9905ba59d7f272c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"_prettify_failures \u003d functools.partial(k_utils.prettify_failures, limit\u003d1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class StorageTransactionFailure(exc.StorageFailure):"},{"line_number":41,"context_line":"    \"\"\"Storage failures that are caused by/reference a transaction failing.\"\"\""},{"line_number":42,"context_line":"    def __init__(self, message, transaction, cause\u003dNone):"},{"line_number":43,"context_line":"        super(StorageTransactionFailure, self).__init__(message, cause\u003dcause)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_973a97c2","line":40,"in_reply_to":"baada198_c54c64cb","updated":"2014-07-24 02:50:44.000000000","message":"Placing the two in exceptions.py sounds good.","commit_id":"4ef55cbde95522496faaa33c49f16adc28056068"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"aaeda4ba621961d46f1387ece42da105afc4e912","unresolved":false,"context_lines":[{"line_number":37,"context_line":"_prettify_failures \u003d functools.partial(k_utils.prettify_failures, limit\u003d1)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class StorageTransactionFailure(exc.StorageFailure):"},{"line_number":41,"context_line":"    \"\"\"Storage failures that are caused by/reference a transaction failing.\"\"\""},{"line_number":42,"context_line":"    def __init__(self, message, transaction, cause\u003dNone):"},{"line_number":43,"context_line":"        super(StorageTransactionFailure, self).__init__(message, cause\u003dcause)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_c54c64cb","line":40,"in_reply_to":"baada198_e565e8af","updated":"2014-07-23 21:07:05.000000000","message":"The issue with that is that both job/persistence raise different exception types as there base exceptions (storage failures are different than job failures) and have different messages that they provide. \n\nWhat about just placing StorageTransactionFailure and associated JobTranscationFailure in exceptions.py; then it\u0027s known how to catch those and to refer to those.\n\nThe other option is to allow StorageFailure/JobFailure to always refer to a transaction (and expose the property as None if no transaction is available). This avoids new types (and less confusion about using new types that just expose a single property).\n\nThoughts?","commit_id":"4ef55cbde95522496faaa33c49f16adc28056068"}]}
