)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dd6a7c168ef3f42d830194793bf6840375cf6c8e","unresolved":true,"context_lines":[{"line_number":7,"context_line":"db: Close ReplConnection sockets on errors/timeouts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This could happen when there was a timeout running _sync_shard_ranges()"},{"line_number":10,"context_line":"in _choose_replication_mode() -- syncing of shard ranges failed, but we"},{"line_number":11,"context_line":"still want to attempt to replicate. If we close the socket, the"},{"line_number":12,"context_line":"connection will automatically spin up a new one the next time we call"},{"line_number":13,"context_line":"request() instead of raising CannotSendRequest."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e0e6c15c_fc6f509d","line":11,"range":{"start_line":10,"start_character":69,"end_line":11,"end_character":34},"updated":"2022-04-21 04:42:42.000000000","message":"Arguably, the bug is here -- I think I understand the logic of why we did it the way we did (it was simple and eased rolling upgrades), but if we\n\n- saw that the remote seemed to support shard ranges,\n- actually attempted to sync shard ranges with it, and\n- hit an encountered a timeout or other error doing so\n\nit seems reasonable to abort replication at that point. That is, the two ways you could arrive at shard_range_success\u003dFalse in https://github.com/openstack/swift/blob/2.29.1/swift/container/replicator.py#L105-L114 should perhaps be dealt with separately; perhaps something like\n\n if \u0027shard_max_row\u0027 in rinfo:\n     # Always replicate shard ranges to new-enough swift\n     shard_range_success \u003d self._sync_shard_ranges(\n         broker, http, info[\u0027id\u0027])\n     if not shard_range_success:\n         return False\n else:\n     shard_range_success \u003d False\n     self.logger.warning(...)","commit_id":"f6f474e429af11ea5566f408d5e69e86c2cec977"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"e168d3211927df08000aec4093dc6816959f3030","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9fff66de_a741925e","updated":"2022-04-07 23:13:05.000000000","message":"Looks good: if HTTP response cannot be gotten, the connection has to be closed.","commit_id":"f6f474e429af11ea5566f408d5e69e86c2cec977"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"55807026dc0151497561047cf7572355e9642125","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ebf17da7_837873dd","updated":"2022-05-09 20:29:42.000000000","message":"it looks like all the fake_http_connection tests also mock out the underlying connection primatives; we should probably start enforcing that they should reject connection reuse on error or setup some tests using anonymous bind sockets so we can get more real intergration testing.\n\nWe can save that for a follow up tho","commit_id":"f6f474e429af11ea5566f408d5e69e86c2cec977"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"660d385fdc08fc64970c6482d47305fe8539f311","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"007a1eff_6d610310","updated":"2022-04-08 04:19:05.000000000","message":"recheck\n\nTransient trouble with a package mirror, I\u0027m guessing?\n\n Error: Package: 1:openssl-devel-1.0.2k-24.el7_9.x86_64 (updates)\n           Requires: openssl-libs(x86-64) \u003d 1:1.0.2k-24.el7_9\n           Installed: 1:openssl-libs-1.0.2k-25.el7_9.x86_64 (installed)\n               openssl-libs(x86-64) \u003d 1:1.0.2k-25.el7_9\n           Available: 1:openssl-libs-1.0.2k-19.el7.x86_64 (base)\n               openssl-libs(x86-64) \u003d 1:1.0.2k-19.el7\n           Available: 1:openssl-libs-1.0.2k-21.el7_9.x86_64 (updates)\n               openssl-libs(x86-64) \u003d 1:1.0.2k-21.el7_9\n           Available: 1:openssl-libs-1.0.2k-22.el7_9.x86_64 (updates)\n               openssl-libs(x86-64) \u003d 1:1.0.2k-22.el7_9\n           Available: 1:openssl-libs-1.0.2k-24.el7_9.x86_64 (updates)\n               openssl-libs(x86-64) \u003d 1:1.0.2k-24.el7_9\n","commit_id":"f6f474e429af11ea5566f408d5e69e86c2cec977"}],"test/unit/common/test_db_replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"55807026dc0151497561047cf7572355e9642125","unresolved":true,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        conn.sock \u003d fake_sock \u003d Closeable()"},{"line_number":363,"context_line":"        self.assertIsNone(conn.replicate(1, 2, 3))"},{"line_number":364,"context_line":"        self.assertTrue(fake_sock.closed)"},{"line_number":365,"context_line":"        self.assertEqual(None, conn.sock)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    def test_rsync_file(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a64f0b37_bd439040","line":364,"updated":"2022-05-09 20:29:42.000000000","message":"i feel like this faked up test is too far away from the observed problem:\n\n\tFAIL: test_repl_connection (test.unit.common.test_db_replicator.TestDBReplicator)\n\t----------------------------------------------------------------------\n\tTraceback (most recent call last):\n\t  File \"/vagrant/swift/test/unit/common/test_db_replicator.py\", line 364, in test_repl_connection\n\t    self.assertTrue(fake_sock.closed)\n\tAssertionError: False is not true\n\t    \u0027False is not true\u0027 \u003d self._formatMessage(\u0027False is not true\u0027, \"%s is not true\" % safe_repr(False))\n\t\u003e\u003e  raise self.failureException(\u0027False is not true\u0027)\n\nisn\u0027t the real traceback more like:\n\n\n\t ERROR reading HTTP response from {\u0027device\u0027: \u0027d8271\u0027, ...}:\n\t Traceback (most recent call last):\n\t   File \".../swift/common/db_replicator.py\", line 172, in replicate\n\t     {\u0027Content-Type\u0027: \u0027application/json\u0027})\n\t   File \".../eventlet/green/http/client.py\", line 1310, in request\n\t     self._send_request(method, url, body, headers, encode_chunked)\n\t   File \".../eventlet/green/http/client.py\", line 1345, in _send_request\n\t     self.putrequest(method, url, **skips)\n\t   File \".../swift/common/bufferedhttp.py\", line 228, in putrequest\n\t     skip_accept_encoding)\n\t   File \".../eventlet/green/http/client.py\", line 1169, in putrequest\n\t     raise CannotSendRequest(self.__state)\n\t eventlet.green.http.client.CannotSendRequest: Request-sent","commit_id":"f6f474e429af11ea5566f408d5e69e86c2cec977"}]}
