)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"217c00d0524f3f7f3047023f4c5008bb408dd3f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"l3_odl_v2: use context.session"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"use context.session instead of newly create session for db"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Authored-by: Edwin Zhai \u003cedwin.zhai@intel.com\u003e"},{"line_number":12,"context_line":"Change-Id: Ic32a094af2dbfe3fd9b898ba371997a0bf1043e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da36d5c6_91564528","line":9,"updated":"2017-02-24 04:51:27.000000000","message":"please add log on GUARD_TRANSACTION","commit_id":"47d5b795bb5f380bf0662e8f8ac378352bc3c620"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"217c00d0524f3f7f3047023f4c5008bb408dd3f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da36d5c6_715d5146","line":13,"updated":"2017-02-24 04:51:27.000000000","message":"closes-bug: #1611533","commit_id":"47d5b795bb5f380bf0662e8f8ac378352bc3c620"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"08ec20162e2db7f93b55d30ec7d89fdf895dd3c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da36d5c6_b4cde932","line":13,"in_reply_to":"da36d5c6_715d5146","updated":"2017-02-24 16:11:20.000000000","message":"and 1614775?","commit_id":"47d5b795bb5f380bf0662e8f8ac378352bc3c620"}],"networking_odl/l3/l3_odl_v2.py":[{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"2ae5af2774088950d3cc9762e905b02aefa7d9c4","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @journal.call_thread_on_end"},{"line_number":156,"context_line":"    def add_router_interface(self, context, router_id, interface_info):"},{"line_number":157,"context_line":"        session \u003d context.session"},{"line_number":158,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":159,"context_line":"            new_router \u003d super("},{"line_number":160,"context_line":"                OpenDaylightL3RouterPlugin, self).add_router_interface("}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_5db2ffe5","line":157,"updated":"2017-02-25 05:15:29.000000000","message":"needs GUARD_TRANSACTION work around.","commit_id":"3849a85e0349cb598b2654347fb28a8ca985096b"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"2ae5af2774088950d3cc9762e905b02aefa7d9c4","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @journal.call_thread_on_end"},{"line_number":165,"context_line":"    def remove_router_interface(self, context, router_id, interface_info):"},{"line_number":166,"context_line":"        session \u003d context.session"},{"line_number":167,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":168,"context_line":"            new_router \u003d super("},{"line_number":169,"context_line":"                OpenDaylightL3RouterPlugin, self).remove_router_interface("}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_7dcd0365","line":166,"range":{"start_line":166,"start_character":9,"end_line":166,"end_character":32},"updated":"2017-02-25 05:15:29.000000000","message":"ditto.","commit_id":"3849a85e0349cb598b2654347fb28a8ca985096b"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"65ee261af511db1a8755be36eae715afe1ff079d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    @journal.call_thread_on_end"},{"line_number":80,"context_line":"    def update_router(self, context, router_id, router):"},{"line_number":81,"context_line":"        session \u003d context.session"},{"line_number":82,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":83,"context_line":"            router_dict \u003d super("},{"line_number":84,"context_line":"                OpenDaylightL3RouterPlugin, self).update_router("},{"line_number":85,"context_line":"                    context, router_id, router)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_76aecbe8","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":49},"updated":"2017-02-28 01:05:23.000000000","message":"GUARD_TRANSACTION workaround is needed.","commit_id":"aa01e821e4c4b1e7cf4fe6d7e3889f870561862f"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"03e19c46569a5e4b575fc4f52f671361a7f2c339","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    @journal.call_thread_on_end"},{"line_number":80,"context_line":"    def update_router(self, context, router_id, router):"},{"line_number":81,"context_line":"        session \u003d context.session"},{"line_number":82,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":83,"context_line":"            router_dict \u003d super("},{"line_number":84,"context_line":"                OpenDaylightL3RouterPlugin, self).update_router("},{"line_number":85,"context_line":"                    context, router_id, router)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_2565e944","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":49},"in_reply_to":"da36d5c6_76aecbe8","updated":"2017-03-07 16:36:40.000000000","message":"Done","commit_id":"aa01e821e4c4b1e7cf4fe6d7e3889f870561862f"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"65ee261af511db1a8755be36eae715afe1ff079d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                  floatingip_id, odl_const.ODL_DELETE,"},{"line_number":153,"context_line":"                                  dependency_list)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @journal.call_thread_on_end"},{"line_number":156,"context_line":"    def add_router_interface(self, context, router_id, interface_info):"},{"line_number":157,"context_line":"        session \u003d context.session"},{"line_number":158,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":159,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":160,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":161,"context_line":"            new_router \u003d super("},{"line_number":162,"context_line":"                OpenDaylightL3RouterPlugin, self).add_router_interface("},{"line_number":163,"context_line":"                    context, router_id, interface_info)"},{"line_number":164,"context_line":"        return new_router"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @journal.call_thread_on_end"},{"line_number":167,"context_line":"    def remove_router_interface(self, context, router_id, interface_info):"},{"line_number":168,"context_line":"        session \u003d context.session"},{"line_number":169,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":170,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":171,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":172,"context_line":"            new_router \u003d super("},{"line_number":173,"context_line":"                OpenDaylightL3RouterPlugin, self).remove_router_interface("},{"line_number":174,"context_line":"                    context, router_id, interface_info)"},{"line_number":175,"context_line":"        return new_router"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    dvr_deletens_if_no_port_warned \u003d False"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_16782f8f","line":175,"range":{"start_line":155,"start_character":0,"end_line":175,"end_character":25},"updated":"2017-02-28 01:05:23.000000000","message":"Given that ODL detects router port by its owner, those methods doesn\u0027t need to be overrided.\nWe can just remove line 155-175.","commit_id":"aa01e821e4c4b1e7cf4fe6d7e3889f870561862f"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"03e19c46569a5e4b575fc4f52f671361a7f2c339","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                  floatingip_id, odl_const.ODL_DELETE,"},{"line_number":153,"context_line":"                                  dependency_list)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @journal.call_thread_on_end"},{"line_number":156,"context_line":"    def add_router_interface(self, context, router_id, interface_info):"},{"line_number":157,"context_line":"        session \u003d context.session"},{"line_number":158,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":159,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":160,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":161,"context_line":"            new_router \u003d super("},{"line_number":162,"context_line":"                OpenDaylightL3RouterPlugin, self).add_router_interface("},{"line_number":163,"context_line":"                    context, router_id, interface_info)"},{"line_number":164,"context_line":"        return new_router"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @journal.call_thread_on_end"},{"line_number":167,"context_line":"    def remove_router_interface(self, context, router_id, interface_info):"},{"line_number":168,"context_line":"        session \u003d context.session"},{"line_number":169,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":170,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":171,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":172,"context_line":"            new_router \u003d super("},{"line_number":173,"context_line":"                OpenDaylightL3RouterPlugin, self).remove_router_interface("},{"line_number":174,"context_line":"                    context, router_id, interface_info)"},{"line_number":175,"context_line":"        return new_router"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    dvr_deletens_if_no_port_warned \u003d False"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a30ddce_455add84","line":175,"range":{"start_line":155,"start_character":0,"end_line":175,"end_character":25},"in_reply_to":"da36d5c6_16782f8f","updated":"2017-03-07 16:36:40.000000000","message":"Done","commit_id":"aa01e821e4c4b1e7cf4fe6d7e3889f870561862f"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"1a47e28d81bc10317b367fc56702e665e6b8a8f2","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    @journal.call_thread_on_end"},{"line_number":160,"context_line":"    def add_router_interface(self, context, router_id, interface_info):"},{"line_number":161,"context_line":"        session \u003d context.session"},{"line_number":162,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":163,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":164,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":165,"context_line":"            new_router \u003d super("}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_68433f6d","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":49},"updated":"2017-02-28 07:43:47.000000000","message":"This causes error. stop overriding add_router_interface or update _is_session_semantic_violated.","commit_id":"0e72df57e6099816211b77607dc8ac9bce733c5d"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"1a47e28d81bc10317b367fc56702e665e6b8a8f2","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        return new_router"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @journal.call_thread_on_end"},{"line_number":171,"context_line":"    def remove_router_interface(self, context, router_id, interface_info):"},{"line_number":172,"context_line":"        session \u003d context.session"},{"line_number":173,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":174,"context_line":"            # Avoid exception of specific operation inside transaction"},{"line_number":175,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":176,"context_line":"            new_router \u003d super("},{"line_number":177,"context_line":"                OpenDaylightL3RouterPlugin, self).remove_router_interface("},{"line_number":178,"context_line":"                    context, router_id, interface_info)"},{"line_number":179,"context_line":"        return new_router"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    dvr_deletens_if_no_port_warned \u003d False"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da36d5c6_e8572f24","line":179,"range":{"start_line":171,"start_character":0,"end_line":179,"end_character":25},"updated":"2017-02-28 07:43:47.000000000","message":"ditto.","commit_id":"0e72df57e6099816211b77607dc8ac9bce733c5d"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def create_router(self, context, router):"},{"line_number":74,"context_line":"        session \u003d context.session"},{"line_number":75,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":76,"context_line":"            # Avoid exception of create_port inside transaction"},{"line_number":77,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":78,"context_line":"            router_dict \u003d super("},{"line_number":79,"context_line":"                OpenDaylightL3RouterPlugin, self).create_router(context,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_c7efb1e7","line":76,"range":{"start_line":76,"start_character":12,"end_line":76,"end_character":63},"updated":"2017-09-19 11:20:05.000000000","message":"If you want to leave it like this, then this should be a FIXME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        session \u003d context.session"},{"line_number":75,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":76,"context_line":"            # Avoid exception of create_port inside transaction"},{"line_number":77,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":78,"context_line":"            router_dict \u003d super("},{"line_number":79,"context_line":"                OpenDaylightL3RouterPlugin, self).create_router(context,"},{"line_number":80,"context_line":"                                                                router)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_0721494e","line":77,"range":{"start_line":77,"start_character":12,"end_line":77,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"It defeats the purpose of `transaction_guard` and what they intended with having it on the first place. Also, this solution is incompatible with `enginefacade`\n\nThe correct way to do it can be seen here: https://review.openstack.org/#/c/396013/","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def update_router(self, context, router_id, router):"},{"line_number":87,"context_line":"        session \u003d context.session"},{"line_number":88,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":89,"context_line":"            # Avoid exception of update_port inside transaction"},{"line_number":90,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":91,"context_line":"            router_dict \u003d super("},{"line_number":92,"context_line":"                OpenDaylightL3RouterPlugin, self).update_router("},{"line_number":93,"context_line":"                    context, router_id, router)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_67c00552","line":90,"range":{"start_line":89,"start_character":12,"end_line":90,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"SAME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        router_dict \u003d self.get_router(context, router_id)"},{"line_number":102,"context_line":"        dependency_list \u003d [router_dict[\u0027gw_port_id\u0027]]"},{"line_number":103,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":104,"context_line":"            # Avoid exception of _delete_current_gw_port inside transaction"},{"line_number":105,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":106,"context_line":"            super(OpenDaylightL3RouterPlugin, self).delete_router(context,"},{"line_number":107,"context_line":"                                                                  router_id)"},{"line_number":108,"context_line":"            journal.record(context, odl_const.ODL_ROUTER, router_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_27ba0dde","line":105,"range":{"start_line":104,"start_character":11,"end_line":105,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"SAME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            initial_status \u003d q_const.FLOATINGIP_STATUS_DOWN"},{"line_number":117,"context_line":"        session \u003d context.session"},{"line_number":118,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":119,"context_line":"            # Avoid exception of create_port inside transaction"},{"line_number":120,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":121,"context_line":"            fip_dict \u003d super("},{"line_number":122,"context_line":"                OpenDaylightL3RouterPlugin, self).create_floatingip("},{"line_number":123,"context_line":"                    context, floatingip, initial_status)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_07cf0980","line":120,"range":{"start_line":119,"start_character":9,"end_line":120,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"SAME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        dependency_list \u003d [floatingip_dict[\u0027router_id\u0027]]"},{"line_number":153,"context_line":"        dependency_list.append(floatingip_dict[\u0027floating_network_id\u0027])"},{"line_number":154,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":155,"context_line":"            # Avoid exception of _delete_floatingip inside transaction"},{"line_number":156,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":157,"context_line":"            super(OpenDaylightL3RouterPlugin, self).delete_floatingip("},{"line_number":158,"context_line":"                context, floatingip_id)"},{"line_number":159,"context_line":"            journal.record(context, odl_const.ODL_FLOATINGIP, floatingip_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_e7cbd56f","line":156,"range":{"start_line":155,"start_character":12,"end_line":156,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"SAME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"},{"author":{"_account_id":26507,"name":"Michel Peterson","email":"michel@redhat.com","username":"mpeterson"},"change_message_id":"1232d3b14a6d595e1b65a4323666f3b136910c9d","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def disassociate_floatingips(self, context, port_id, do_notify\u003dTrue):"},{"line_number":163,"context_line":"        session \u003d context.session"},{"line_number":164,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":165,"context_line":"            setattr(context, \u0027GUARD_TRANSACTION\u0027, False)"},{"line_number":166,"context_line":"            fip_dicts \u003d self.get_floatingips(context,"},{"line_number":167,"context_line":"                                             filters\u003d{\u0027port_id\u0027: [port_id]})"},{"line_number":168,"context_line":"            router_ids \u003d super(OpenDaylightL3RouterPlugin,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_c7c8d175","line":165,"range":{"start_line":165,"start_character":11,"end_line":165,"end_character":56},"updated":"2017-09-19 11:20:05.000000000","message":"SAME","commit_id":"5c1b74dd4bc8adcf1d9ceecb0dda80390f4641e4"}]}
