)]}'
{"swift/obj/ssync_receiver.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"95a94db8173025f3466de7496db015909300b7c6","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            with df.create() as writer:"},{"line_number":273,"context_line":"                writer.commit(remote[\u0027ts_data\u0027])"},{"line_number":274,"context_line":"            return self._check_local(remote)"},{"line_number":275,"context_line":"        return result"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def _check_missing(self, line):"},{"line_number":278,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_a5092186","line":275,"updated":"2015-10-08 17:49:46.000000000","message":"awesome!  don\u0027t even need to request it from the sender - too cool!","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"770e1b32e7cb0778547a5c017f91048394831ca1","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                return self._check_local(remote, make_durable\u003dFalse)"},{"line_number":278,"context_line":"            except Exception:  # noqa"},{"line_number":279,"context_line":"                # if commit fails then fall back to wanting a full update"},{"line_number":280,"context_line":"                pass"},{"line_number":281,"context_line":"        return result"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _check_missing(self, line):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_e67544fa","line":280,"updated":"2016-03-03 14:51:21.000000000","message":"It might be nicer to log the exception to help our future selves debug this if it breaks.","commit_id":"a85a9f8a7386cd86e233a46e2747ef6f384b2778"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d4c6e8a3bcd002a60a86ceb52c1b47bd8f951844","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                return self._check_local(remote, make_durable\u003dFalse)"},{"line_number":278,"context_line":"            except Exception:  # noqa"},{"line_number":279,"context_line":"                # if commit fails then fall back to wanting a full update"},{"line_number":280,"context_line":"                pass"},{"line_number":281,"context_line":"        return result"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def _check_missing(self, line):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_0a014e05","line":280,"in_reply_to":"7af24918_e67544fa","updated":"2016-03-04 15:44:19.000000000","message":"It would and I cannot think why I did not, I even had a test asserting there was no log!","commit_id":"a85a9f8a7386cd86e233a46e2747ef6f384b2778"}],"test/unit/obj/test_ssync_sender.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"95a94db8173025f3466de7496db015909300b7c6","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                       account\u003d\u0027a\u0027, container\u003d\u0027c\u0027, obj\u003d\u0027o\u0027, body\u003d\u0027test\u0027,"},{"line_number":121,"context_line":"                       extra_metadata\u003dNone, policy\u003dNone,"},{"line_number":122,"context_line":"                       frag_index\u003dNone, timestamp\u003dNone, df_mgr\u003dNone,"},{"line_number":123,"context_line":"                       commit\u003dTrue):"},{"line_number":124,"context_line":"        policy \u003d policy or POLICIES.legacy"},{"line_number":125,"context_line":"        object_parts \u003d account, container, obj"},{"line_number":126,"context_line":"        timestamp \u003d Timestamp(time.time()) if timestamp is None else timestamp"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e561593a","line":123,"updated":"2015-10-08 17:49:46.000000000","message":"nice","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"95a94db8173025f3466de7496db015909300b7c6","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                            frag_index\u003dNone, timestamp\u003dNone, df_mgr\u003dNone):"},{"line_number":152,"context_line":"        df \u003d self._make_diskfile(device, partition, account, container, obj,"},{"line_number":153,"context_line":"                                 body, extra_metadata, policy, frag_index,"},{"line_number":154,"context_line":"                                 timestamp, df_mgr)"},{"line_number":155,"context_line":"        df.open()"},{"line_number":156,"context_line":"        return df"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_254c31c7","line":154,"updated":"2015-10-08 17:49:46.000000000","message":"good composition","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"95a94db8173025f3466de7496db015909300b7c6","unresolved":false,"context_lines":[{"line_number":1907,"context_line":"        tx_objs[\u0027o3\u0027] \u003d self._create_ondisk_files("},{"line_number":1908,"context_line":"            tx_df_mgr, \u0027o3\u0027, policy, t3, (rx_node_index,))"},{"line_number":1909,"context_line":"        rx_objs[\u0027o3\u0027] \u003d self._create_ondisk_files("},{"line_number":1910,"context_line":"            rx_df_mgr, \u0027o3\u0027, policy, t3, (14,))"},{"line_number":1911,"context_line":"        # o4 primary and handoff fragment archives on tx, handoff in sync on rx"},{"line_number":1912,"context_line":"        t4 \u003d next(self.ts_iter)"},{"line_number":1913,"context_line":"        tx_objs[\u0027o4\u0027] \u003d self._create_ondisk_files("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e59639ef","line":1910,"updated":"2015-10-08 17:49:46.000000000","message":"what is this magic number here?  frag_index?  how does it relate to rx_node_index?","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"91ccd327842e9bd0eea225232aee40565e194529","unresolved":false,"context_lines":[{"line_number":1907,"context_line":"        tx_objs[\u0027o3\u0027] \u003d self._create_ondisk_files("},{"line_number":1908,"context_line":"            tx_df_mgr, \u0027o3\u0027, policy, t3, (rx_node_index,))"},{"line_number":1909,"context_line":"        rx_objs[\u0027o3\u0027] \u003d self._create_ondisk_files("},{"line_number":1910,"context_line":"            rx_df_mgr, \u0027o3\u0027, policy, t3, (14,))"},{"line_number":1911,"context_line":"        # o4 primary and handoff fragment archives on tx, handoff in sync on rx"},{"line_number":1912,"context_line":"        t4 \u003d next(self.ts_iter)"},{"line_number":1913,"context_line":"        tx_objs[\u0027o4\u0027] \u003d self._create_ondisk_files("}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_e032a70f","line":1910,"in_reply_to":"7a2fa921_e59639ef","updated":"2015-10-08 18:12:40.000000000","message":"14 is just a number that !\u003d rx_node_index i.e. some other frag. I guess I could have gone for rx_node_index + 1.","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"95a94db8173025f3466de7496db015909300b7c6","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"                self.assertEqual(expected_body, subreq[\u0027body\u0027])"},{"line_number":2064,"context_line":"        # verify all expected subreqs consumed"},{"line_number":2065,"context_line":"        for _method, expected in expected_subreqs.items():"},{"line_number":2066,"context_line":"            self.assertFalse(expected)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"        # verify on disk files..."},{"line_number":2069,"context_line":"        tx_objs.pop(\u0027o4\u0027)  # o4 should not have been sync\u0027d"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_c5469d7a","line":2066,"updated":"2015-10-08 17:49:46.000000000","message":"ok, so the expected list of obj\u0027s is not empty...","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"1cd07c45b30e8ff441102d6153e8c17b4fa6e306","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"                self.assertEqual(expected_body, subreq[\u0027body\u0027])"},{"line_number":2064,"context_line":"        # verify all expected subreqs consumed"},{"line_number":2065,"context_line":"        for _method, expected in expected_subreqs.items():"},{"line_number":2066,"context_line":"            self.assertFalse(expected)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"        # verify on disk files..."},{"line_number":2069,"context_line":"        tx_objs.pop(\u0027o4\u0027)  # o4 should not have been sync\u0027d"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_db4e806e","line":2066,"in_reply_to":"7a2fa921_600e973c","updated":"2015-10-08 18:14:54.000000000","message":"no this is better, the other just says 0 !\u003d 1 and you don\u0027t get to see what\u0027s in the list.","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"91ccd327842e9bd0eea225232aee40565e194529","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"                self.assertEqual(expected_body, subreq[\u0027body\u0027])"},{"line_number":2064,"context_line":"        # verify all expected subreqs consumed"},{"line_number":2065,"context_line":"        for _method, expected in expected_subreqs.items():"},{"line_number":2066,"context_line":"            self.assertFalse(expected)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"        # verify on disk files..."},{"line_number":2069,"context_line":"        tx_objs.pop(\u0027o4\u0027)  # o4 should not have been sync\u0027d"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_600e973c","line":2066,"in_reply_to":"7a2fa921_c5469d7a","updated":"2015-10-08 18:12:40.000000000","message":"someone once told me to use this form rather than self.assertEqual(0, len(expected)). I\u0027m still not sure I like it.","commit_id":"a7aa515aea28680e46166020b96c7202b30d0d40"}]}
