)]}'
{"swift/obj/ssync_receiver.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"86379889759a439c3775eb0be1138af9881d96d1","unresolved":false,"context_lines":[{"line_number":407,"context_line":"            line \u003d self.fp.readline(self.app.network_chunk_size)"},{"line_number":408,"context_line":"        if not line:"},{"line_number":409,"context_line":"            # Guess they hung up waiting for us to process the missing check"},{"line_number":410,"context_line":"            return"},{"line_number":411,"context_line":"        if line.strip() !\u003d b\u0027:UPDATES: START\u0027:"},{"line_number":412,"context_line":"            raise Exception(\u0027Looking for :UPDATES: START got %r\u0027 % line[:1024])"},{"line_number":413,"context_line":"        successes \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_8050615f","line":410,"updated":"2020-08-01 03:06:52.000000000","message":"While the bug has a repro that hits the other path, this is the one that pushed me to write a patch. Grepping for \u0027Traceback\u0027 gave me so much worthless crap!\n\nEXCEPTION in ssync.Receiver: \nTraceback (most recent call last):\n  File \".../swift/obj/ssync_receiver.py\", line 168, in __call__\n    for data in self.updates():\n  File \".../swift/obj/ssync_receiver.py\", line 406, in updates\n    raise Exception(\u0027Looking for :UPDATES: START got %r\u0027 % line[:1024])\nException: Looking for :UPDATES: START got \u0027\u0027","commit_id":"69630e568b2418c95d030aff2f9a83bd93c73554"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f564069aa490bbb7ccf2ddeb021a48c67964a2fe","unresolved":true,"context_lines":[{"line_number":179,"context_line":"                    if self.app.replication_semaphore:"},{"line_number":180,"context_line":"                        self.app.replication_semaphore.release()"},{"line_number":181,"context_line":"            except SsyncClientDisconnected:"},{"line_number":182,"context_line":"                self.app.logger.debug(\u0027ssync client disconnected\u0027)"},{"line_number":183,"context_line":"                self.disconnect \u003d True"},{"line_number":184,"context_line":"            except exceptions.LockTimeout as err:"},{"line_number":185,"context_line":"                self.app.logger.debug("}],"source_content_type":"text/x-python","patch_set":5,"id":"a22e26ce_073534d0","line":182,"updated":"2020-11-23 18:11:36.000000000","message":"IDK is debug is too \u0027quiet\u0027 for this - on the sender side the corresponding event is logged as an error. Maybe it\u0027s enough to flag problems at sender and not at receiver. Not sure.","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5496359a59e88adf5272d1416b5924552e31d703","unresolved":true,"context_lines":[{"line_number":179,"context_line":"                    if self.app.replication_semaphore:"},{"line_number":180,"context_line":"                        self.app.replication_semaphore.release()"},{"line_number":181,"context_line":"            except SsyncClientDisconnected:"},{"line_number":182,"context_line":"                self.app.logger.debug(\u0027ssync client disconnected\u0027)"},{"line_number":183,"context_line":"                self.disconnect \u003d True"},{"line_number":184,"context_line":"            except exceptions.LockTimeout as err:"},{"line_number":185,"context_line":"                self.app.logger.debug("}],"source_content_type":"text/x-python","patch_set":5,"id":"5368f7d9_c9d2de81","line":182,"in_reply_to":"a22e26ce_073534d0","updated":"2020-11-24 19:02:27.000000000","message":"I think I\u0027d prefer \"error\" to start - not obvious to me at all we only want errors on the sender side... sender may have died, exploded or be full of gremlins?!","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5496359a59e88adf5272d1416b5924552e31d703","unresolved":true,"context_lines":[{"line_number":362,"context_line":"        line \u003d self._readline(\u0027missing_check start\u0027)"},{"line_number":363,"context_line":"        if not line:"},{"line_number":364,"context_line":"            # Guess they hung up"},{"line_number":365,"context_line":"            raise SsyncClientDisconnected"},{"line_number":366,"context_line":"        if line.strip() !\u003d b\u0027:MISSING_CHECK: START\u0027:"},{"line_number":367,"context_line":"            raise Exception("},{"line_number":368,"context_line":"                \u0027Looking for :MISSING_CHECK: START got %r\u0027 % line[:1024])"}],"source_content_type":"text/x-python","patch_set":5,"id":"cf8e2309_0b4113a3","line":365,"updated":"2020-11-24 19:02:27.000000000","message":"i think we\u0027re catching this in test_SSYNC_initial_path or test_SSYNC_mount_check","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"f564069aa490bbb7ccf2ddeb021a48c67964a2fe","unresolved":true,"context_lines":[{"line_number":423,"context_line":"        of place partition, for example."},{"line_number":424,"context_line":"        \"\"\""},{"line_number":425,"context_line":"        line \u003d self._readline(\u0027updates start\u0027)"},{"line_number":426,"context_line":"        if not line:"},{"line_number":427,"context_line":"            # Guess they hung up waiting for us to process the missing check"},{"line_number":428,"context_line":"            raise SsyncClientDisconnected"},{"line_number":429,"context_line":"        if line.strip() !\u003d b\u0027:UPDATES: START\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"45f8e1c1_61c3ab35","line":426,"updated":"2020-11-23 18:11:36.000000000","message":"not sure there is test coverage for this - see https://review.opendev.org/c/openstack/swift/+/763812/","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5496359a59e88adf5272d1416b5924552e31d703","unresolved":true,"context_lines":[{"line_number":423,"context_line":"        of place partition, for example."},{"line_number":424,"context_line":"        \"\"\""},{"line_number":425,"context_line":"        line \u003d self._readline(\u0027updates start\u0027)"},{"line_number":426,"context_line":"        if not line:"},{"line_number":427,"context_line":"            # Guess they hung up waiting for us to process the missing check"},{"line_number":428,"context_line":"            raise SsyncClientDisconnected"},{"line_number":429,"context_line":"        if line.strip() !\u003d b\u0027:UPDATES: START\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1801b6e3_568f2cc7","line":426,"in_reply_to":"45f8e1c1_61c3ab35","updated":"2020-11-24 19:02:27.000000000","message":"yeah, as best I can tell this isn\u0027t covered...","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"}],"test/unit/obj/test_ssync_receiver.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5496359a59e88adf5272d1416b5924552e31d703","unresolved":true,"context_lines":[{"line_number":417,"context_line":"            req \u003d swob.Request.blank("},{"line_number":418,"context_line":"                \u0027/device/partition\u0027, environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027SSYNC\u0027})"},{"line_number":419,"context_line":"            resp \u003d req.get_response(self.controller)"},{"line_number":420,"context_line":"            self.assertEqual(resp.body, b\u0027\\r\\n\u0027)"},{"line_number":421,"context_line":"            self.assertEqual(resp.status_int, 200)"},{"line_number":422,"context_line":"            mocked_replication_semaphore.acquire.assert_called_once_with(0)"},{"line_number":423,"context_line":"            mocked_replication_semaphore.release.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":5,"id":"81ae9c7c_7343cbc1","line":420,"updated":"2020-11-24 19:02:27.000000000","message":"This is great, that was a dumb body.\n\nI\u0027d *like* to see these tests make *assertions* about the log messages.\n\nBut at a minimum, I\u0027d want to at least be able to *see* the log messages when I\u0027m running the tests in verbose mode:\n\nhttps://review.opendev.org/c/openstack/swift/+/764051","commit_id":"8ee72d75add1b6704de770a4adecb38d9b17e280"}]}
