Public bug reported:

NOTE: This is a low priority issue, mostly because it eventually gets
fixed by maintenance task

CheckRevisionNumberCommand relies in finding a corresponding entry in OVN's NAT 
table
in order to update the OVN_REV_NUM_EXT_ID_KEY to keep ovn and neutron databases 
in sync.

Ref: http://lucasgom.es/posts/neutron_ovn_database_consistency.html

Trouble is that unless the floating ip is associated, there will be no
entries in OVN's NAT table, causing the call to

 db_rev.bump_revision(context, floatingip, ovn_const.TYPE_FLOATINGIPS)

to not take place.

Steps to reproduce it:

# create a floating ip but do not associate it with anything so router_id is 
None
FIP=172.24.4.8
openstack floating ip create --floating-ip-address ${FIP} public
FIP_UUID=$(openstack floating ip show ${FIP} -f value -c id) ; echo $FIP_UUID

# Mess with its name, which will bump revision on fip object
openstack floating ip set --description foo ${FIP_UUID}

Code when there is no NAT for a given FIP makes line 1044 skip line 1045

https://github.com/openstack/neutron/blob/15088b39bab715e40d8161a85c95ca400708c83f/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L1044

check_rev_cmd.result is None

The dbs are now the inconsistent state

mysql> use neutron;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from standardattributes where resource_type="floatingips";
+----+---------------+---------------------+---------------------+-------------+-----------------+
| id | resource_type | created_at          | updated_at          | description 
| revision_number |
+----+---------------+---------------------+---------------------+-------------+-----------------+
| 49 | floatingips   | 2020-05-18 20:56:51 | 2020-05-18 20:58:58 | foo2        
|               2 |
+----+---------------+---------------------+---------------------+-------------+-----------------+
1 row in set (0.01 sec)

mysql> select * from ovn_revision_numbers where resource_type="floatingips";
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
| standard_attr_id | resource_uuid                        | resource_type | 
revision_number | created_at          | updated_at          |
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
|               49 | 5a1e1ffa-0312-4e78-b7a0-551c396bcf6b | floatingips   |     
          0 | 2020-05-18 20:56:51 | 2020-05-18 20:57:08 |
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
1 row in set (0.00 sec)

Maintenance task fixes it up later

May 18 21:50:29 stack neutron-server[909]: DEBUG futurist.periodics [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Submitting periodic 
callback 'neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance.DBIn\
consistenciesPeriodics.check_for_inconsistencies' {{(pid=3186) 
_process_scheduled 
/usr/local/lib/python3.6/dist-packages/futurist/periodics.py:642}}
May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronizing Neutron and OVN datab\
ases {{(pid=3186) check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:347}}
May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Number of 
inconsistencies found at \
create/update: floatingips=1 {{(pid=3186) _log 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:325}}
May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Fixing 
resource 6b876a35-d286-4407-\
b538-9ce07ab1a281 (type: floatingips) at create/update {{(pid=3186) 
check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:359}}
May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.db.ovn_revision_numbers_db [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Successfully bumped 
revision number for resource 6b876a35-d286-4407-b538-9ce07ab1\
a281 (type: floatingips) to 1
May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronization finished (took 0.08 \
seconds)

** Affects: neutron
     Importance: Undecided
         Status: New

** Description changed:

  NOTE: This is a low priority issue, mostly because it eventually gets
  fixed by maintenance task
  
  CheckRevisionNumberCommand relies in finding a corresponding entry in OVN's 
NAT table
  in order to update the OVN_REV_NUM_EXT_ID_KEY to keep ovn and neutron 
databases in sync.
  
  Ref: http://lucasgom.es/posts/neutron_ovn_database_consistency.html
  
- Trouble is that unless the floating ip is associated, there will be no 
entries in OVN's NAT
- table, causing the call to 
+ Trouble is that unless the floating ip is associated, there will be no
+ entries in OVN's NAT table, causing the call to
  
-        db_rev.bump_revision(context, floatingip,
- ovn_const.TYPE_FLOATINGIPS)
+  db_rev.bump_revision(context, floatingip, ovn_const.TYPE_FLOATINGIPS)
  
  to not take place.
- 
  
  Steps to reproduce it:
  
  # create a floating ip but do not associate it with anything so router_id is 
None
  FIP=172.24.4.8
  openstack floating ip create --floating-ip-address ${FIP} public
  FIP_UUID=$(openstack floating ip show ${FIP} -f value -c id) ; echo $FIP_UUID
  
  # Mess with its name, which will bump revision on fip object
  openstack floating ip set --description foo ${FIP_UUID}
  
- 
  Code when there is no NAT for a given FIP makes line 1044 skip line 1045
  
  
https://github.com/openstack/neutron/blob/15088b39bab715e40d8161a85c95ca400708c83f/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L1044
  
  check_rev_cmd.result is None
- 
  
  The dbs are now the inconsistent state
  
  mysql> use neutron;
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A
  
  Database changed
  mysql> select * from standardattributes where resource_type="floatingips";
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  | id | resource_type | created_at          | updated_at          | 
description | revision_number |
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  | 49 | floatingips   | 2020-05-18 20:56:51 | 2020-05-18 20:58:58 | foo2       
 |               2 |
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  1 row in set (0.01 sec)
  
  mysql> select * from ovn_revision_numbers where resource_type="floatingips";
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  | standard_attr_id | resource_uuid                        | resource_type | 
revision_number | created_at          | updated_at          |
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  |               49 | 5a1e1ffa-0312-4e78-b7a0-551c396bcf6b | floatingips   |   
            0 | 2020-05-18 20:56:51 | 2020-05-18 20:57:08 |
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  1 row in set (0.00 sec)
  
- 
- 
  Maintenance task fixes it up later
  
  May 18 21:50:29 stack neutron-server[909]: DEBUG futurist.periodics [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Submitting periodic 
callback 'neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance.DBIn\
  consistenciesPeriodics.check_for_inconsistencies' {{(pid=3186) 
_process_scheduled 
/usr/local/lib/python3.6/dist-packages/futurist/periodics.py:642}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronizing Neutron and OVN datab\
  ases {{(pid=3186) check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:347}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Number of 
inconsistencies found at \
  create/update: floatingips=1 {{(pid=3186) _log 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:325}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Fixing 
resource 6b876a35-d286-4407-\
  b538-9ce07ab1a281 (type: floatingips) at create/update {{(pid=3186) 
check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:359}}
  May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.db.ovn_revision_numbers_db [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Successfully bumped 
revision number for resource 6b876a35-d286-4407-b538-9ce07ab1\
  a281 (type: floatingips) to 1
  May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronization finished (took 0.08 \
  seconds)

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1879407

Title:
  [OVN] Modifying FIP that is no associated causes ovn_revision_numbers
  to go stale

Status in neutron:
  New

Bug description:
  NOTE: This is a low priority issue, mostly because it eventually gets
  fixed by maintenance task

  CheckRevisionNumberCommand relies in finding a corresponding entry in OVN's 
NAT table
  in order to update the OVN_REV_NUM_EXT_ID_KEY to keep ovn and neutron 
databases in sync.

  Ref: http://lucasgom.es/posts/neutron_ovn_database_consistency.html

  Trouble is that unless the floating ip is associated, there will be no
  entries in OVN's NAT table, causing the call to

   db_rev.bump_revision(context, floatingip, ovn_const.TYPE_FLOATINGIPS)

  to not take place.

  Steps to reproduce it:

  # create a floating ip but do not associate it with anything so router_id is 
None
  FIP=172.24.4.8
  openstack floating ip create --floating-ip-address ${FIP} public
  FIP_UUID=$(openstack floating ip show ${FIP} -f value -c id) ; echo $FIP_UUID

  # Mess with its name, which will bump revision on fip object
  openstack floating ip set --description foo ${FIP_UUID}

  Code when there is no NAT for a given FIP makes line 1044 skip line
  1045

  
https://github.com/openstack/neutron/blob/15088b39bab715e40d8161a85c95ca400708c83f/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#L1044

  check_rev_cmd.result is None

  The dbs are now the inconsistent state

  mysql> use neutron;
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A

  Database changed
  mysql> select * from standardattributes where resource_type="floatingips";
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  | id | resource_type | created_at          | updated_at          | 
description | revision_number |
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  | 49 | floatingips   | 2020-05-18 20:56:51 | 2020-05-18 20:58:58 | foo2       
 |               2 |
  
+----+---------------+---------------------+---------------------+-------------+-----------------+
  1 row in set (0.01 sec)

  mysql> select * from ovn_revision_numbers where resource_type="floatingips";
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  | standard_attr_id | resource_uuid                        | resource_type | 
revision_number | created_at          | updated_at          |
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  |               49 | 5a1e1ffa-0312-4e78-b7a0-551c396bcf6b | floatingips   |   
            0 | 2020-05-18 20:56:51 | 2020-05-18 20:57:08 |
  
+------------------+--------------------------------------+---------------+-----------------+---------------------+---------------------+
  1 row in set (0.00 sec)

  Maintenance task fixes it up later

  May 18 21:50:29 stack neutron-server[909]: DEBUG futurist.periodics [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Submitting periodic 
callback 'neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance.DBIn\
  consistenciesPeriodics.check_for_inconsistencies' {{(pid=3186) 
_process_scheduled 
/usr/local/lib/python3.6/dist-packages/futurist/periodics.py:642}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronizing Neutron and OVN datab\
  ases {{(pid=3186) check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:347}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Number of 
inconsistencies found at \
  create/update: floatingips=1 {{(pid=3186) _log 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:325}}
  May 18 21:50:29 stack neutron-server[909]: DEBUG 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: Fixing 
resource 6b876a35-d286-4407-\
  b538-9ce07ab1a281 (type: floatingips) at create/update {{(pid=3186) 
check_for_inconsistencies 
/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:359}}
  May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.db.ovn_revision_numbers_db [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Successfully bumped 
revision number for resource 6b876a35-d286-4407-b538-9ce07ab1\
  a281 (type: floatingips) to 1
  May 18 21:50:29 stack neutron-server[909]: INFO 
neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.maintenance [None 
req-35091ee8-f2fe-47cc-b757-8bb70f750b47 None None] Maintenance task: 
Synchronization finished (took 0.08 \
  seconds)

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1879407/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to