)]}'
{"swift/obj/diskfile.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0917c17610e8de934c66e3be31083ef0f4424334","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            except OSError:"},{"line_number":1197,"context_line":"                logging.exception(_(\u0027Problem writing durable state file: %s\u0027),"},{"line_number":1198,"context_line":"                                  durable_ts_path)"},{"line_number":1199,"context_line":"                raise"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"class DiskFileReader(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5da432b9","line":1199,"updated":"2015-03-10 06:25:16.000000000","message":"In an ideal world, we wouldn\u0027t have OSError leaking out to the object-server - it would be helpful if we knew what OSError we were trying to handle here.\n\nEither DiskFileNoSpace or just a DiskFileError would probably be appropriate.","commit_id":"522c19ea9f8332b319a531a5f243e81902ae142b"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ce514a91cb0497fe446c2648ab81d8de98c84248","unresolved":false,"context_lines":[{"line_number":1196,"context_line":"            except OSError:"},{"line_number":1197,"context_line":"                logging.exception(_(\u0027Problem writing durable state file: %s\u0027),"},{"line_number":1198,"context_line":"                                  durable_ts_path)"},{"line_number":1199,"context_line":"                raise"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":""},{"line_number":1202,"context_line":"class DiskFileReader(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_15a98f7b","line":1199,"in_reply_to":"9a80dd14_5da432b9","updated":"2015-03-10 19:04:45.000000000","message":"Agree. Nor an IOError (oops).","commit_id":"522c19ea9f8332b319a531a5f243e81902ae142b"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"0a60b496ebd3943359a903766120f12ba5dfad8b","unresolved":false,"context_lines":[{"line_number":1192,"context_line":"        if self._diskfile.policy.policy_type \u003d\u003d EC_POLICY:"},{"line_number":1193,"context_line":"            exc \u003d msg \u003d None"},{"line_number":1194,"context_line":"            durable_file_path \u003d join(self._datadir, timestamp + \u0027.durable\u0027)"},{"line_number":1195,"context_line":"            try:"},{"line_number":1196,"context_line":"                with open(durable_file_path, \u0027w\u0027) as _fd:"},{"line_number":1197,"context_line":"                    try:"},{"line_number":1198,"context_line":"                        fsync(_fd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_39d19b57","line":1195,"updated":"2015-03-13 10:42:38.000000000","message":"note to self: think i need to move this to run in a separate thread","commit_id":"bdcdcfa6880d79ff52977cba94ae1c4bde2d18b5"}],"swift/obj/server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0917c17610e8de934c66e3be31083ef0f4424334","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                try:"},{"line_number":634,"context_line":"                    writer.write_durable_timestamp(metadata[\u0027X-Timestamp\u0027])"},{"line_number":635,"context_line":"                except OSError:"},{"line_number":636,"context_line":"                    # TODO: not necessary, let the error be caught in __call__"},{"line_number":637,"context_line":"                    return HTTPServerError(request\u003drequest)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"                # Drain any remaining MIME docs from the socket. There"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_7d0ad68a","line":636,"updated":"2015-03-10 06:25:16.000000000","message":"agree, don\u0027t want to have to catch OSError in obj.server - written like this it\u0027s probably too wide an exception handler and eating the traceback (which was hopefully logged).\n\nThere should be a way for DiskFile to safely tell the object server it did NOT successfully write the durable timestamp - and the obj.server will translate a DiskFileError to server error (you could do that in __call__, but you add a Pokemon DiskFile handler, you\u0027d probably want to log the stack - which could be noisy if the DiskFile also logged before raising the exception)","commit_id":"522c19ea9f8332b319a531a5f243e81902ae142b"}]}
