)]}'
{"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c2f6352f6c3b078c9526b0b1fdb81bc8d10abf2e","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class OVSDBReconnectionEvent(row_event.RowEvent):"},{"line_number":81,"context_line":"    \"\"\"TODO blah blah blah\"\"\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def __init__(self, driver, version):"},{"line_number":84,"context_line":"        self.driver \u003d driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_f6782af9","line":81,"range":{"start_line":81,"start_character":4,"end_line":81,"end_character":29},"updated":"2020-02-25 16:38:49.000000000","message":"exactly","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c2f6352f6c3b078c9526b0b1fdb81bc8d10abf2e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.driver \u003d driver"},{"line_number":85,"context_line":"        self.version \u003d version"},{"line_number":86,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":87,"context_line":"        events \u003d (self.ROW_CREATE, self.ROW_UPDATE)"},{"line_number":88,"context_line":"        super(OVSDBReconnectionEvent, self).__init__("},{"line_number":89,"context_line":"            events, table, None)"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_8112d257","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":50},"updated":"2020-02-25 16:38:49.000000000","message":"Can\u0027t we just have CREATE and remove the UPDATE?","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"73029b0d20b194f823476546635951a23a94eab6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.driver \u003d driver"},{"line_number":85,"context_line":"        self.version \u003d version"},{"line_number":86,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":87,"context_line":"        events \u003d (self.ROW_CREATE, self.ROW_UPDATE)"},{"line_number":88,"context_line":"        super(OVSDBReconnectionEvent, self).__init__("},{"line_number":89,"context_line":"            events, table, None)"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_65546fcb","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":50},"in_reply_to":"1fa4df85_254d1772","updated":"2020-02-26 15:04:20.000000000","message":"Yeah, I found a better way to figure it out. See patch-set #3","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"62c2a22363450e097e5b1214f5b032e84151cdc3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.driver \u003d driver"},{"line_number":85,"context_line":"        self.version \u003d version"},{"line_number":86,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":87,"context_line":"        events \u003d (self.ROW_CREATE, self.ROW_UPDATE)"},{"line_number":88,"context_line":"        super(OVSDBReconnectionEvent, self).__init__("},{"line_number":89,"context_line":"            events, table, None)"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_ad21f34f","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":50},"in_reply_to":"1fa4df85_8112d257","updated":"2020-02-26 10:20:14.000000000","message":"I was experimenting with this but the connection entry in the database does not go away when the connection is killed or even the service (q-svc) is stopped. If we are going to rely on the Connection table I\u0027m afraid we will need to listen to updates as well.\n\nThat said, it should be a pretty lightweight task because the methods will only rerun in case of a version change. Upon receiving the event we will compare the current version in the IDL object with the initial one that was passed as a parameter to this class. All the information is in memory so should be ok.\n\nThat also said, I will ask around to see if others have a better idea of how to detect database re-connections.","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"e202568118438e6067c31847568f574e36ac3ee2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.driver \u003d driver"},{"line_number":85,"context_line":"        self.version \u003d version"},{"line_number":86,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":87,"context_line":"        events \u003d (self.ROW_CREATE, self.ROW_UPDATE)"},{"line_number":88,"context_line":"        super(OVSDBReconnectionEvent, self).__init__("},{"line_number":89,"context_line":"            events, table, None)"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_254d1772","line":87,"range":{"start_line":87,"start_character":40,"end_line":87,"end_character":50},"in_reply_to":"1fa4df85_ad21f34f","updated":"2020-02-26 14:55:35.000000000","message":"Ok, if we don\u0027t have any other option, that\u0027s fine. It should be pretty lightweight but at scale we\u0027ll be processing a lot of events in case the OVN VIP is moved, or services are updated, etc. Not a critical matter btu if we can do something to optimize it, that\u0027d be great. Thanks for checking it and considering!","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c2f6352f6c3b078c9526b0b1fdb81bc8d10abf2e","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    # is held by some other neutron-server instance in the cloud, we\u0027ll attempt"},{"line_number":276,"context_line":"    # to perform the migration every 10 seconds until completed."},{"line_number":277,"context_line":"    @periodics.periodic(spacing\u003d10, run_immediately\u003dTrue)"},{"line_number":278,"context_line":"    @rerun_on_schema_updates"},{"line_number":279,"context_line":"    def migrate_to_port_groups(self):"},{"line_number":280,"context_line":"        \"\"\"Perform the migration from Address Sets to Port Groups. \"\"\""},{"line_number":281,"context_line":"        # TODO(dalvarez): Remove this in U cycle when we\u0027re sure that all"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_b6139266","line":278,"range":{"start_line":278,"start_character":4,"end_line":278,"end_character":28},"updated":"2020-02-25 16:38:49.000000000","message":"This is cool :)","commit_id":"23a3ce9fe6715b4c4e0f527c375d814403653007"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, True),))"},{"line_number":91,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @lockutils.synchronized(\u0027ovn-nbdb-version-check\u0027)"},{"line_number":94,"context_line":"    def run(self, event, row, old):"},{"line_number":95,"context_line":"        curr_version \u003d self.driver.get_ovn_nbdb_version()"},{"line_number":96,"context_line":"        if self.version !\u003d curr_version:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_b9959ae6","line":93,"updated":"2020-02-27 21:17:48.000000000","message":"Is this needed? It looks like there is only one maintenance thread, so only one connection that would be listening for this event? You\u0027ve been staring at this longer than I have, so I\u0027m probably missing something, but I\u0027d like to understand it better. :)","commit_id":"316aff7482bb5e1f3c7781c493322194557d9220"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"},{"line_number":91,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @lockutils.synchronized(\u0027ovn-nbdb-version-check\u0027)"},{"line_number":94,"context_line":"    def run(self, event, row, old):"},{"line_number":95,"context_line":"        curr_version \u003d self.driver.get_ovn_nbdb_version()"},{"line_number":96,"context_line":"        if self.version !\u003d curr_version:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_59ad862f","line":93,"updated":"2020-02-27 21:17:48.000000000","message":"Is this needed? It looks like there is only one maintenance thread, so only one connection that would be listening for this event? You\u0027ve been staring at this longer than I have, so I\u0027m probably missing something, but I\u0027d like to understand it better. :)","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"35a35cfe9c5ae48cc9d4ace91b0c9b2c791f850d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"},{"line_number":91,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @lockutils.synchronized(\u0027ovn-nbdb-version-check\u0027)"},{"line_number":94,"context_line":"    def run(self, event, row, old):"},{"line_number":95,"context_line":"        curr_version \u003d self.driver.get_ovn_nbdb_version()"},{"line_number":96,"context_line":"        if self.version !\u003d curr_version:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_dc4f1a32","line":93,"in_reply_to":"1fa4df85_59ad862f","updated":"2020-02-28 13:50:43.000000000","message":"Ops, I think u r right here... I first thought about this synchronization because of the periodic nature of the maintenance task (every 5 minutes) and this new way of running some maintenance tasks but it\u0027s not needed, these migration tasks (the ones returning NeverAgain()) won\u0027t run periodically.\n\nAnd yeah, as you pointed out as well we only have 1 maintenance worker running. Good catch man, I will remove this.","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a958acc035372f7cc431c7c73665db1707d95cae","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.driver \u003d driver"},{"line_number":84,"context_line":"        self.version \u003d version"},{"line_number":85,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":86,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":87,"context_line":"        super(OVNNBDBReconnectionEvent, self).__init__("},{"line_number":88,"context_line":"            events, table, ((\u0027is_connected\u0027, \u0027\u003d\u0027, True),),"},{"line_number":89,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_30e76fe7","line":86,"updated":"2020-02-28 18:07:18.000000000","message":"Ok, so I wrote a little test script https://paste.centos.org/view/0caebff0 that just looks at CREATE/UPDATE Connection events. When just restarting the ovsdb-server it seemed like I always got an UPDATE is_connected False-\u003eTrue event. But if I  try doing ovs-appctl --target /usr/local/var/run/openvswitch/ovnnb_db.ctl ovsdb-server/reconnect, it looks like about 50% of the time, I don\u0027t get the UPDATE.\n\nSo it at least looks possible for there to be a race condition on getting the UPDATE, depending on when in the process the client connects. We will *always* get a CREATE event when reconnecting because we get a db dump upon connection, so looks like it is safer to use that.","commit_id":"986384502ce171d5b80c753f84acef16ce8b5527"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a4b31f16483f6d0f8801df7f691181b54e6574b0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.driver \u003d driver"},{"line_number":84,"context_line":"        self.version \u003d version"},{"line_number":85,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":86,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":87,"context_line":"        super(OVNNBDBReconnectionEvent, self).__init__("},{"line_number":88,"context_line":"            events, table, ((\u0027is_connected\u0027, \u0027\u003d\u0027, True),),"},{"line_number":89,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_a303160f","line":86,"in_reply_to":"1fa4df85_30e76fe7","updated":"2020-02-29 09:49:20.000000000","message":"Wow thanks a lot for this amazing review Terry!\n\nTotally agreed, let\u0027s change this to CREATE","commit_id":"986384502ce171d5b80c753f84acef16ce8b5527"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a958acc035372f7cc431c7c73665db1707d95cae","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":86,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":87,"context_line":"        super(OVNNBDBReconnectionEvent, self).__init__("},{"line_number":88,"context_line":"            events, table, ((\u0027is_connected\u0027, \u0027\u003d\u0027, True),),"},{"line_number":89,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_103a7333","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":59},"updated":"2020-02-28 18:07:18.000000000","message":"nit: It occurs to me that if something has set up multiple Connections (something outside of openstack is connecting differently? via ssl or something?) that this would also technically monitor the other Connection as well. We could add a check for (\u0027target\u0027, \u0027\u003d\u0027, ovn_conf.get_ovn_nb_connection()) if we wanted to avoid this unlikely issue. Not that important since run() just cares about schema versions, though.","commit_id":"986384502ce171d5b80c753f84acef16ce8b5527"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a4b31f16483f6d0f8801df7f691181b54e6574b0","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        table \u003d \u0027Connection\u0027"},{"line_number":86,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":87,"context_line":"        super(OVNNBDBReconnectionEvent, self).__init__("},{"line_number":88,"context_line":"            events, table, ((\u0027is_connected\u0027, \u0027\u003d\u0027, True),),"},{"line_number":89,"context_line":"            old_conditions\u003d((\u0027is_connected\u0027, \u0027\u003d\u0027, False),))"},{"line_number":90,"context_line":"        self.event_name \u003d self.__class__.__name__"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def run(self, event, row, old):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_5e03150e","line":89,"range":{"start_line":88,"start_character":0,"end_line":89,"end_character":59},"in_reply_to":"1fa4df85_103a7333","updated":"2020-02-29 09:49:20.000000000","message":"Right, yeah I will keep it simple and rely on the version check only. The check should be quick fast since it\u0027s just comparing two in-memory values.","commit_id":"986384502ce171d5b80c753f84acef16ce8b5527"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        return cls(connection_string, helper)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":284,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class BaseOvnSbIdl(connection.OvsdbIdl):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_b9791afd","line":284,"updated":"2020-02-27 21:17:48.000000000","message":"It looks like we are adding this because we need to handle the event in the maintenance task and since is_maintenance\u003d\u003dTrue, binding_events\u003dFalse in get_connection, which means we are using this Idl class. But I notice that DBInconsitenciesPeriodics calls idl.set_lock(), so  do we need an is_lock_contended() check in notify? But it\u0027s only run once in the maintenance thread, so does the locking ever do anything since there\u0027s only one anyway?\n\nIt all gets a little confusing. One of these days we should rework some of the get_connection() stuff. :p","commit_id":"316aff7482bb5e1f3c7781c493322194557d9220"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        #  - In case the neutron server which owns this lock goes down,"},{"line_number":320,"context_line":"        #    ovsdb server would assign the lock to one of the other neutron"},{"line_number":321,"context_line":"        #    servers."},{"line_number":322,"context_line":"        self.event_lock_name \u003d \"neutron_ovn_event_lock\""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":325,"context_line":"        # Do not handle the notification if the event lock is requested,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_19506ed4","line":322,"updated":"2020-02-27 21:17:48.000000000","message":"As an aside: as of 6ef5489cf70cbc140a8768727350a8556fc8e870 we never set_lock(self.event_lock_name) so this line does nothing (and in notify() below is_contended() will be false unless something else calls set_lock(), which is only called by DBInconsistenciesPeriodics (and the Octavia driver). But as mentioned above, it looks like DBInconsistenciesPeriodics actually uses BaseOvnIdl above which never checks _is_lock_contended(). So it looks like \"uses a lock\" isn\u0027t something that is exactly consistent w/ this class anymore..","commit_id":"316aff7482bb5e1f3c7781c493322194557d9220"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        return cls(connection_string, helper)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":284,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class BaseOvnSbIdl(connection.OvsdbIdl):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_f9ab121a","line":284,"updated":"2020-02-27 21:17:48.000000000","message":"It looks like we are adding this because we need to handle the event in the maintenance task and since is_maintenance\u003d\u003dTrue, binding_events\u003d\u003dFalse in get_connection(), which means we are using this Idl class. But I notice that DBInconsitenciesPeriodics calls idl.set_lock(), so  do we need an is_lock_contended() check in notify? Or we just want to handle it out-of-band with the has_lock() in DBInconsitenciesPeriodics for specific things?  But it\u0027s only run once in the maintenance thread, so does the locking ever do anything since there\u0027s only one anyway?\n\nIt all gets a little confusing. One of these days we should rework some of the get_connection() stuff. :p It\u0027d be nice to be able to merge some of these Idl classes. Maybe just passing events in the constructor or something.","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"35a35cfe9c5ae48cc9d4ace91b0c9b2c791f850d","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        return cls(connection_string, helper)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":284,"context_line":"        self.notify_handler.notify(event, row, updates)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class BaseOvnSbIdl(connection.OvsdbIdl):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_7cbce6db","line":284,"in_reply_to":"1fa4df85_f9ab121a","updated":"2020-02-28 13:50:43.000000000","message":"Exactly, had to add this because the binding_events\u003dFalse but, I can\u0027t just pass binding_events\u003dTrue because that would instantiate an IDL with the distributed locking mechanism and we do not want/need that for the maintenance task.\n\nRegarding the set_lock(), yeah, perhaps that could be moved to here I believe. I think that should be OK, but, should I move it as part of this patch ? Sounds a bit out of scope idk.\n\nAnd man, yes, let\u0027s refactor this get_connection() at some point... Everything I have to look at the code to and remember again what it\u0027s doing there, so confusing...","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"a3d29d2dbbde882557c3d3ae00c96a09745992ee","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        #  - In case the neutron server which owns this lock goes down,"},{"line_number":320,"context_line":"        #    ovsdb server would assign the lock to one of the other neutron"},{"line_number":321,"context_line":"        #    servers."},{"line_number":322,"context_line":"        self.event_lock_name \u003d \"neutron_ovn_event_lock\""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":325,"context_line":"        # Do not handle the notification if the event lock is requested,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_7946427f","line":322,"updated":"2020-02-27 21:17:48.000000000","message":"As an aside: as of 6ef5489cf70cbc140a8768727350a8556fc8e870 we never set_lock(self.event_lock_name) so this line does nothing (and in notify() below is_contended() will be false unless something else calls set_lock(), which is only called by DBInconsistenciesPeriodics (and the Octavia driver). But as mentioned above, it looks like DBInconsistenciesPeriodics actually uses BaseOvnIdl above which never checks _is_lock_contended(). So it looks like \"uses a lock\" isn\u0027t something that is exactly consistent w/ this class anymore..","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"35a35cfe9c5ae48cc9d4ace91b0c9b2c791f850d","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        #  - In case the neutron server which owns this lock goes down,"},{"line_number":320,"context_line":"        #    ovsdb server would assign the lock to one of the other neutron"},{"line_number":321,"context_line":"        #    servers."},{"line_number":322,"context_line":"        self.event_lock_name \u003d \"neutron_ovn_event_lock\""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def notify(self, event, row, updates\u003dNone):"},{"line_number":325,"context_line":"        # Do not handle the notification if the event lock is requested,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_dcc4fa61","line":322,"in_reply_to":"1fa4df85_7946427f","updated":"2020-02-28 13:50:43.000000000","message":"Yeah, I want to get rid of this OvnIdl class as a whole to be honest with you. Right now only the OVN Metadata agent is using it, we probably can get rid of it as part of the get_connection() refactor.","commit_id":"733ca48304a894f2ad29f2b3d7493d653a2156f0"}]}
