)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1b63010d785602ae386f6c2ee91f77b29f15542","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- We need rely less on the specific DB itself to maintain referential"},{"line_number":13,"context_line":"integrity"},{"line_number":14,"context_line":"- Help to reduce the DB round trips in case of manipulating the DB"},{"line_number":15,"context_line":"directly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"bp ondelete-cascade"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a2ca52d_3f28d499","line":15,"updated":"2015-10-16 01:30:23.000000000","message":"DB hits isn\u0027t a great gain here in my opinion, think of how often a service is deleted.","commit_id":"9c4579b61768a76d7ca0ecc2a7a4c1e5a5493967"}],"keystone/catalog/backends/sql.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1b63010d785602ae386f6c2ee91f77b29f15542","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    def delete_service(self, service_id):"},{"line_number":200,"context_line":"        session \u003d sql.get_session()"},{"line_number":201,"context_line":"        with session.begin():"},{"line_number":202,"context_line":"            ref \u003d self._get_service(session, service_id)"},{"line_number":203,"context_line":"            session.query(Endpoint).filter_by(service_id\u003dservice_id).delete()"},{"line_number":204,"context_line":"            session.delete(ref)"},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_12470f4c","line":202,"updated":"2015-10-16 01:30:23.000000000","message":"What about this line here ? In the case of your proposal, it wouldn\u0027t be needed anymore.","commit_id":"9c4579b61768a76d7ca0ecc2a7a4c1e5a5493967"}],"keystone/common/sql/migrate_repo/versions/074_fk_endpoint_ondelete_cascade.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1b63010d785602ae386f6c2ee91f77b29f15542","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5a2ca52d_bfc94428","updated":"2015-10-16 01:30:23.000000000","message":"This needs to be 081 at this point.","commit_id":"9c4579b61768a76d7ca0ecc2a7a4c1e5a5493967"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6b6b613643f1217444d4a47e1800783fbf1f250a","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # The service could be removed successfully"},{"line_number":610,"context_line":"            self.assertEqual(0, session.query(service_table)."},{"line_number":611,"context_line":"                             filter_by(id\u003dservice_id).count())"},{"line_number":612,"context_line":"            # But the endpoint will be the orphan in the DB"},{"line_number":613,"context_line":"            self.assertEqual(2, session.query(endpoint_table)."},{"line_number":614,"context_line":"                             filter_by(service_id\u003dservice_id).count())"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aca2d91_80166ea5","line":612,"updated":"2015-05-08 13:56:29.000000000","message":"this specific sqlite behavior should be documented somewhere.","commit_id":"c1d556658dbf17d46982e96daeb66255c8717260"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"18f25228a38af6adc030bf58b60bf4b33efc94e1","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # The service could be removed successfully"},{"line_number":610,"context_line":"            self.assertEqual(0, session.query(service_table)."},{"line_number":611,"context_line":"                             filter_by(id\u003dservice_id).count())"},{"line_number":612,"context_line":"            # But the endpoint will be the orphan in the DB"},{"line_number":613,"context_line":"            self.assertEqual(2, session.query(endpoint_table)."},{"line_number":614,"context_line":"                             filter_by(service_id\u003dservice_id).count())"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a0c5dc1_249babcb","line":612,"in_reply_to":"1aca2d91_80166ea5","updated":"2015-05-12 09:30:51.000000000","message":"@Lance, address it in this patch(https://review.openstack.org/#/c/182205/)","commit_id":"c1d556658dbf17d46982e96daeb66255c8717260"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"05aa619e80daba95e4c3eb757caa6be18e67d9b5","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            self.assertEqual(2, session.query(endpoint_table)."},{"line_number":701,"context_line":"                             filter_by(service_id\u003dservice_id).count())"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"        self.upgrade(73)"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        # SQLite database doesn\u0027t enforce FK constraint by default"},{"line_number":706,"context_line":"        if self.engine.name \u003d\u003d \"sqlite\":"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_d966b4ba","line":703,"updated":"2015-06-23 14:49:35.000000000","message":"this should be 74? i wonder why it passed given it wasn\u0027t fully upgraded?","commit_id":"a6c426510a68cf1317b6006eb9c9cea958fc5869"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c093f4afb817057e07e9d063d0e26907ee4a5028","unresolved":false,"context_lines":[{"line_number":700,"context_line":"            self.assertEqual(2, session.query(endpoint_table)."},{"line_number":701,"context_line":"                             filter_by(service_id\u003dservice_id).count())"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"        self.upgrade(73)"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        # SQLite database doesn\u0027t enforce FK constraint by default"},{"line_number":706,"context_line":"        if self.engine.name \u003d\u003d \"sqlite\":"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_34d8ec1d","line":703,"in_reply_to":"fa32b979_d966b4ba","updated":"2015-06-24 02:43:00.000000000","message":"Steve, as you know, for the same reason, it\u0027s sqlite in place instead of SQL. Just assume SQL could be enabled manually.","commit_id":"a6c426510a68cf1317b6006eb9c9cea958fc5869"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b1b63010d785602ae386f6c2ee91f77b29f15542","unresolved":false,"context_lines":[{"line_number":669,"context_line":"            delete \u003d service_table.delete().where("},{"line_number":670,"context_line":"                service_table.c.id \u003d\u003d service_id)"},{"line_number":671,"context_line":"            session.execute(delete)"},{"line_number":672,"context_line":"            session.commit()"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        # create one arbitrary service and two associated endpoints"},{"line_number":675,"context_line":"        service_id \u003d add_service()"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_1fe1589a","line":672,"updated":"2015-10-16 01:30:23.000000000","message":"I\u0027d prefer to define these internal methods at the very beginning, without mixing them with the test logic itself.\n\nBut this can be just my preference.","commit_id":"9c4579b61768a76d7ca0ecc2a7a4c1e5a5493967"}]}
