)]}'
{"swift/cli/relinker.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"dfa627b37913046825a8e8bff2b5757c77da26c5","unresolved":true,"context_lines":[{"line_number":230,"context_line":"                                    raise"},{"line_number":231,"context_line":"                    except OSError as e:"},{"line_number":232,"context_line":"                        self.logger.info(\u0027Error unlinking %r: %s\u0027,"},{"line_number":233,"context_line":"                                         to_unlink, e)"},{"line_number":234,"context_line":"                try:"},{"line_number":235,"context_line":"                    os.rmdir(partition_path)"},{"line_number":236,"context_line":"                except OSError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"eda721f2_e7c17f9b","line":233,"updated":"2021-04-07 01:15:27.000000000","message":"info or would warning be better?","commit_id":"e5c1f3bdae287f470e38ce86754954a1685f021f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6a0f679fde2016274034f492d9f4a1174997f34f","unresolved":true,"context_lines":[{"line_number":230,"context_line":"                                    raise"},{"line_number":231,"context_line":"                    except OSError as e:"},{"line_number":232,"context_line":"                        self.logger.info(\u0027Error unlinking %r: %s\u0027,"},{"line_number":233,"context_line":"                                         to_unlink, e)"},{"line_number":234,"context_line":"                try:"},{"line_number":235,"context_line":"                    os.rmdir(partition_path)"},{"line_number":236,"context_line":"                except OSError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"73e06c47_f92359b0","line":233,"in_reply_to":"eda721f2_e7c17f9b","updated":"2021-04-07 19:09:10.000000000","message":"This doesn\u0027t seem like a worrying state to me; there\u0027s nothing the operator needs to do and replicators should make sure everything that needs cleaning up gets cleaned up. I could be swayed, but info felt better than warning given that. Honestly, I was debating about debug, but didn\u0027t want it to get lost in all the \"relinking x to y\" lines.","commit_id":"e5c1f3bdae287f470e38ce86754954a1685f021f"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"afbcdaffd413f9845b2494633371e10db58692ff","unresolved":true,"context_lines":[{"line_number":233,"context_line":"                                         to_unlink, e)"},{"line_number":234,"context_line":"                try:"},{"line_number":235,"context_line":"                    os.rmdir(partition_path)"},{"line_number":236,"context_line":"                except OSError:"},{"line_number":237,"context_line":"                    # Most likely, some data landed in here or we hit an error"},{"line_number":238,"context_line":"                    # above. Let the replicator deal with things; it was worth"},{"line_number":239,"context_line":"                    # a shot."}],"source_content_type":"text/x-python","patch_set":1,"id":"1cc41211_39512d41","line":236,"updated":"2021-04-07 10:42:49.000000000","message":"might be interesting to add a log here, in case there is no error above but something created the lock file?","commit_id":"e5c1f3bdae287f470e38ce86754954a1685f021f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6a0f679fde2016274034f492d9f4a1174997f34f","unresolved":true,"context_lines":[{"line_number":233,"context_line":"                                         to_unlink, e)"},{"line_number":234,"context_line":"                try:"},{"line_number":235,"context_line":"                    os.rmdir(partition_path)"},{"line_number":236,"context_line":"                except OSError:"},{"line_number":237,"context_line":"                    # Most likely, some data landed in here or we hit an error"},{"line_number":238,"context_line":"                    # above. Let the replicator deal with things; it was worth"},{"line_number":239,"context_line":"                    # a shot."}],"source_content_type":"text/x-python","patch_set":1,"id":"2add85d6_c7aec2e9","line":236,"in_reply_to":"1cc41211_39512d41","updated":"2021-04-07 19:09:10.000000000","message":"Maybe -- but the assumed error will be ENOTEMPTY; IDK how useful the extra logging would be. I guess I could do something like\n\n if e.errno \u003d\u003d errno.ENOTEMPTY:\n     try:\n         items \u003d os.listdir(partition_path)\n     except OSError:\n         self.logger.info(\n             \u0027Error removing partition %r; directory not empty (but also not listable)\u0027,\n             partition_path)\n     else:\n         self.logger.info(\n             \u0027Error removing partition %r; directory still has items %r\u0027,\n             partition_path, items)\n\nMy expectation would be that it wouldn\u0027t be uncommon to just see one or two suffix dirs when it trips, though (and it should be the dominant case once we figure out the empty-except-for-a-lock-file issue).\n\nI suppose this *could* also throw an EPERM -- but then, so would the replicator; I think I\u0027d rather deal with that in the normal course of operations, rather than during some special intervention like a PPI.","commit_id":"e5c1f3bdae287f470e38ce86754954a1685f021f"}]}
