)]}'
{"swift/obj/replicator.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"6a9451a80bcc5fc733cab20558ca9c84cec06862","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                dirlist \u003d os.listdir(path)"},{"line_number":228,"context_line":"                return [suff for suff in dirlist"},{"line_number":229,"context_line":"                        if len(suff) \u003d\u003d 3 and isdir(join(path, suff))]"},{"line_number":230,"context_line":"            except OSError:"},{"line_number":231,"context_line":"                return None"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        self.replication_count +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_bbdc8ce5","line":230,"updated":"2014-12-11 22:22:02.000000000","message":"Could you look for errno \u003d\u003d ENOENT here? I feel like OSError is a little too broad, and I\u0027d prefer things like EPERM get logged as exceptions.","commit_id":"b013a69376881a675916e36256d3cdbe4e01f2d0"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"58f7332eab8753146587b7331802ac52fff7cc17","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                return [suff for suff in dirlist"},{"line_number":230,"context_line":"                        if len(suff) \u003d\u003d 3 and isdir(join(path, suff))]"},{"line_number":231,"context_line":"            except OSError as e:"},{"line_number":232,"context_line":"                if e.errno \u003d\u003d errno.ENOENT:"},{"line_number":233,"context_line":"                    return None"},{"line_number":234,"context_line":"                raise"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_1971b3e0","line":232,"updated":"2014-12-29 07:54:33.000000000","message":"Not sure about this, but maybe adding another small test that other exceptions are raised? To avoid regression in the future?","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"20d7951779253babf99a71fb0d1e1e97a5593615","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                return [suff for suff in dirlist"},{"line_number":230,"context_line":"                        if len(suff) \u003d\u003d 3 and isdir(join(path, suff))]"},{"line_number":231,"context_line":"            except OSError as e:"},{"line_number":232,"context_line":"                if e.errno \u003d\u003d errno.ENOENT:"},{"line_number":233,"context_line":"                    return None"},{"line_number":234,"context_line":"                raise"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_cb6ae380","line":232,"in_reply_to":"3a961159_1971b3e0","updated":"2014-12-29 23:58:26.000000000","message":"yup, totally agree.  We shouldn\u0027t be adding code w/o coverage even if it is pretty small :)  I like the other test additions though!","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"e2cb2988e36a66c721546a31de325393ac52b383","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                self.logger.info(_(\"Partition already gone, skipping: %s\"),"},{"line_number":245,"context_line":"                                 job[\u0027path\u0027])"},{"line_number":246,"context_line":"                return"},{"line_number":247,"context_line":"            if suffixes:"},{"line_number":248,"context_line":"                for node in job[\u0027nodes\u0027]:"},{"line_number":249,"context_line":"                    success \u003d self.sync(node, job, suffixes)"},{"line_number":250,"context_line":"                    if success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_8bf7fbd3","line":247,"updated":"2014-12-30 00:02:20.000000000","message":"oh yeah and I guess this condition isn\u0027t really needed anymore either","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"3fab52aade4ae8fce5c890280154062a099c9106","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                self.logger.info(_(\"Partition already gone, skipping: %s\"),"},{"line_number":245,"context_line":"                                 job[\u0027path\u0027])"},{"line_number":246,"context_line":"                return"},{"line_number":247,"context_line":"            if suffixes:"},{"line_number":248,"context_line":"                for node in job[\u0027nodes\u0027]:"},{"line_number":249,"context_line":"                    success \u003d self.sync(node, job, suffixes)"},{"line_number":250,"context_line":"                    if success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_a58202a3","line":247,"in_reply_to":"3a961159_7749cc31","updated":"2014-12-31 21:59:36.000000000","message":"ahh, yeah","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"b23b5cf6832d475402b33901998a78eae2e6bc96","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                self.logger.info(_(\"Partition already gone, skipping: %s\"),"},{"line_number":245,"context_line":"                                 job[\u0027path\u0027])"},{"line_number":246,"context_line":"                return"},{"line_number":247,"context_line":"            if suffixes:"},{"line_number":248,"context_line":"                for node in job[\u0027nodes\u0027]:"},{"line_number":249,"context_line":"                    success \u003d self.sync(node, job, suffixes)"},{"line_number":250,"context_line":"                    if success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_7749cc31","line":247,"in_reply_to":"3a961159_8bf7fbd3","updated":"2014-12-30 08:01:05.000000000","message":"I think it\u0027s still needed, because suffixes might be an empty list (if the directory is not gone)?","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"20d7951779253babf99a71fb0d1e1e97a5593615","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            else:"},{"line_number":264,"context_line":"                # delete handoff if all syncs were successful"},{"line_number":265,"context_line":"                delete_handoff \u003d len(responses) \u003d\u003d len(job[\u0027nodes\u0027]) and \\"},{"line_number":266,"context_line":"                    all(responses)"},{"line_number":267,"context_line":"            if not suffixes or delete_handoff:"},{"line_number":268,"context_line":"                self.logger.info(_(\"Removing partition: %s\"), job[\u0027path\u0027])"},{"line_number":269,"context_line":"                tpool.execute(shutil.rmtree, job[\u0027path\u0027], ignore_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_eb679fb5","line":266,"updated":"2014-12-29 23:58:26.000000000","message":"so I\u0027m curious if the initial condition needs to be checked anymore?","commit_id":"0dac033856383186d5a5a84e39ad30eb3d8334d5"}]}
