)]}'
{"swift/obj/replicator.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5b02b33cc570e70249a302ddab9198587cd7e849","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                                          node)"},{"line_number":487,"context_line":"            self.suffix_count +\u003d len(local_hash)"},{"line_number":488,"context_line":"        except StopIteration:"},{"line_number":489,"context_line":"            self.logger.warning(\u0027Ran out of handoffs while replicating \u0027"},{"line_number":490,"context_line":"                                \u0027partition %s\u0027, job[\u0027partition\u0027])"},{"line_number":491,"context_line":"        except (Exception, Timeout):"},{"line_number":492,"context_line":"            failure_devs_info.update(target_devs_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_482001ad","line":489,"range":{"start_line":489,"start_character":24,"end_line":489,"end_character":31},"updated":"2017-12-18 21:29:40.000000000","message":"Maybe should be logged at error? There\u0027s some precedent at https://github.com/openstack/swift/blob/2.16.0/swift/common/db_replicator.py#L558","commit_id":"d8e3151f5f82554a291dd2db9ff31e7f96ad6133"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"c6ca3c63b6490c4256883cc3372571acdca70d41","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.suffix_count +\u003d len(local_hash)"},{"line_number":488,"context_line":"        except StopIteration:"},{"line_number":489,"context_line":"            self.logger.warning(\u0027Ran out of handoffs while replicating \u0027"},{"line_number":490,"context_line":"                                \u0027partition %s\u0027, job[\u0027partition\u0027])"},{"line_number":491,"context_line":"        except (Exception, Timeout):"},{"line_number":492,"context_line":"            failure_devs_info.update(target_devs_info)"},{"line_number":493,"context_line":"            self._add_failure_stats(failure_devs_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_ce241963","line":490,"updated":"2017-12-18 23:02:38.000000000","message":"cool, we now catch StopIteration. but if we hit the stop iteration it means we\u0027ve run out of handoffs and why? Most likely because there were some failures.\nHowever this catch is just dropping the failure_devs on the floor, when before a StopIteration would add these to failure stats (see line 492 and 493 below).\n\nDo we need to at least add?:\n\n  self._add_failure_stats(failure_devs_info)\n\nOr add both lines and mark 0 successes?","commit_id":"d8e3151f5f82554a291dd2db9ff31e7f96ad6133"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1919c4ef2a6428c0fd9f20a19c7c4f2208f7e78d","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.suffix_count +\u003d len(local_hash)"},{"line_number":488,"context_line":"        except StopIteration:"},{"line_number":489,"context_line":"            self.logger.warning(\u0027Ran out of handoffs while replicating \u0027"},{"line_number":490,"context_line":"                                \u0027partition %s\u0027, job[\u0027partition\u0027])"},{"line_number":491,"context_line":"        except (Exception, Timeout):"},{"line_number":492,"context_line":"            failure_devs_info.update(target_devs_info)"},{"line_number":493,"context_line":"            self._add_failure_stats(failure_devs_info)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_2ee345db","line":490,"in_reply_to":"df87a7cf_ce241963","updated":"2017-12-18 23:26:55.000000000","message":"Hmm... we already lose the failure info if we end up succeeding... I wonder if that should move down to the finally block...\n\nI\u0027m not sure we should do the\n\n failure_devs_info.update(target_devs_info)\n\nthough -- the only delta is the devs that *actually worked*, it seems wrong to me to increment their failures... but I suppose I don\u0027t really know how stats[\u0027failure_nodes\u0027] gets used...","commit_id":"d8e3151f5f82554a291dd2db9ff31e7f96ad6133"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"71dc40afe8f792e4f36bbb5d4da79010cf028721","unresolved":false,"context_lines":[{"line_number":811,"context_line":"            _(\"Object replication complete (once). (%.02f minutes)\"), total)"},{"line_number":812,"context_line":"        if not (override_partitions or override_devices):"},{"line_number":813,"context_line":"            replication_last \u003d time.time()"},{"line_number":814,"context_line":"            dump_recon_cache({\u0027replication_stats\u0027: self.stats,"},{"line_number":815,"context_line":"                              \u0027replication_time\u0027: total,"},{"line_number":816,"context_line":"                              \u0027replication_last\u0027: replication_last,"},{"line_number":817,"context_line":"                              \u0027object_replication_time\u0027: total,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_4e732917","line":814,"updated":"2017-12-18 23:41:18.000000000","message":"The failure nodes seem to be dumped to recon cache here and down in run forever.","commit_id":"d8e3151f5f82554a291dd2db9ff31e7f96ad6133"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"807d968a4d2a87f0dcae95ea7156bf877836e7ad","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.suffix_count +\u003d len(local_hash)"},{"line_number":488,"context_line":"        except StopIteration:"},{"line_number":489,"context_line":"            self.logger.error(\u0027Ran out of handoffs while replicating \u0027"},{"line_number":490,"context_line":"                              \u0027partition %s\u0027, job[\u0027partition\u0027])"},{"line_number":491,"context_line":"        except (Exception, Timeout):"},{"line_number":492,"context_line":"            failure_devs_info.update(target_devs_info)"},{"line_number":493,"context_line":"            self.logger.exception(_(\"Error syncing partition\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_56be32ff","line":490,"updated":"2018-01-09 23:26:45.000000000","message":"I wish this message said what ring this is (well, policy really). But it is better than traceback, so please only improve it if you re-spin the patch.","commit_id":"fba3fb70894246124fcb5233f15f1d9cae807756"}]}
