)]}'
{"swift/obj/ssync_sender.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"901c34b9e0b5be7c1d3a1dbbe9d0015e0ea7404c","unresolved":false,"context_lines":[{"line_number":387,"context_line":"                raise exceptions.ReplicationException("},{"line_number":388,"context_line":"                    \u0027Got %d failures during replication\u0027 % len(failures))"},{"line_number":389,"context_line":"        if self.daemon.batch_sync:"},{"line_number":390,"context_line":"            self.send_sync()"},{"line_number":391,"context_line":"        with exceptions.MessageTimeout("},{"line_number":392,"context_line":"                self.daemon.node_timeout, \u0027updates end\u0027):"},{"line_number":393,"context_line":"            msg \u003d \u0027:UPDATES: END\\r\\n\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0f450b9b","line":390,"updated":"2018-10-12 22:26:29.000000000","message":"Right -- and we only need to do this once because we do it *after* waiting on the subrequests to finish.","commit_id":"14fc4244d3919bd753e5e515f846ae3b3f16fd86"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"901c34b9e0b5be7c1d3a1dbbe9d0015e0ea7404c","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"            try:"},{"line_number":459,"context_line":"                if conn is None:"},{"line_number":460,"context_line":"                    conn \u003d bufferedhttp.BufferedHTTPConnection(\u0027%s:%s\u0027 % ("},{"line_number":461,"context_line":"                        self.node[\u0027replication_ip\u0027],"},{"line_number":462,"context_line":"                        self.node[\u0027replication_port\u0027]))"},{"line_number":463,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4f8223a7","line":460,"range":{"start_line":460,"start_character":40,"end_line":460,"end_character":62},"updated":"2018-10-12 22:26:29.000000000","message":"OK, so each greenthread opens up its own connection, and the original connection just trickles out NOOPs until everybody completes and we can SYNC...\n\nSo our base connection says something like\n\n :UPDATES: START\n NOOP\n NOOP\n ...\n NOOP\n SYNC\n :UPDATES: END\n\nis that right? Is there any reason to keep the connection alive that whole time, or could we close it down and bring it back up at the end to minimize resource usage? Or is it such little overhead that it just doesn\u0027t matter?","commit_id":"14fc4244d3919bd753e5e515f846ae3b3f16fd86"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"901c34b9e0b5be7c1d3a1dbbe9d0015e0ea7404c","unresolved":false,"context_lines":[{"line_number":461,"context_line":"                        self.node[\u0027replication_ip\u0027],"},{"line_number":462,"context_line":"                        self.node[\u0027replication_port\u0027]))"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"                conn.putrequest(method, path)"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"                conn.putheader(\u0027X-Backend-Storage-Policy-Index\u0027,"},{"line_number":467,"context_line":"                               str(int(self.job[\u0027policy\u0027])))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_413af7c3","line":464,"updated":"2018-10-12 22:26:29.000000000","message":"So these are honest-to-god pipelined PUT/POST/DELETE HTTP requests, not using the SSYNC verb? Is there/should there be anything to identify it as being SSYNC traffic in logs? I wonder if we should at least set a User-Agent or something...\n\nPreviously... all the subrequests would get the same tx id, maybe? I need to look at what happens on master...","commit_id":"14fc4244d3919bd753e5e515f846ae3b3f16fd86"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"901c34b9e0b5be7c1d3a1dbbe9d0015e0ea7404c","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                while resp.read():"},{"line_number":487,"context_line":"                    pass"},{"line_number":488,"context_line":"                if resp.status \u003c 200 or resp.status \u003e 299:"},{"line_number":489,"context_line":"                    self.daemon.logger.error(\u0027Failed to PUT %s: %d %s\u0027 % ("},{"line_number":490,"context_line":"                        url_path, resp.status, resp.reason))"},{"line_number":491,"context_line":"                    self.failures +\u003d 1"},{"line_number":492,"context_line":"                    failures.append(url_path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0f88abc0","line":489,"range":{"start_line":489,"start_character":56,"end_line":489,"end_character":59},"updated":"2018-10-12 22:26:29.000000000","message":"Is this necessarily a PUT?","commit_id":"14fc4244d3919bd753e5e515f846ae3b3f16fd86"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"901c34b9e0b5be7c1d3a1dbbe9d0015e0ea7404c","unresolved":false,"context_lines":[{"line_number":493,"context_line":"                else:"},{"line_number":494,"context_line":"                    self.successes +\u003d 1"},{"line_number":495,"context_line":"            except Exception:"},{"line_number":496,"context_line":"                self.daemon.logger.exception(\u0027Replication issue\u0027)"},{"line_number":497,"context_line":"                self.failures +\u003d 1"},{"line_number":498,"context_line":"                failures.append(url_path)"},{"line_number":499,"context_line":"                conn.close()  # FIXME: catch error here?"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6fb03f8e","line":496,"range":{"start_line":496,"start_character":46,"end_line":496,"end_character":57},"updated":"2018-10-12 22:26:29.000000000","message":"Is this necessarily replication, or could it be reconstruction traffic?","commit_id":"14fc4244d3919bd753e5e515f846ae3b3f16fd86"}]}
