)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8a8f5c9f2ca55b1af4d440c8a582e086c2b6e1bf","unresolved":true,"context_lines":[{"line_number":9,"context_line":"In [1] we added support for FDB learning. In order to avoid issues"},{"line_number":10,"context_line":"due to that table increasing without limits, which will impact OVN"},{"line_number":11,"context_line":"performance, this patch is adding support for its aging mechanisms"},{"line_number":12,"context_line":"which was added in OVN 23.06 in [2]. By default is disabled, so if"},{"line_number":13,"context_line":"`localnet_learn_fdb` is enabled, the new configuration parameters"},{"line_number":14,"context_line":"should be appropriately configured too: `fdb_age_threshold` and"},{"line_number":15,"context_line":"`fdb_removal_limit`"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"4a659dc9_1e331ce5","line":12,"range":{"start_line":12,"start_character":23,"end_line":12,"end_character":28},"updated":"2023-10-24 07:41:49.000000000","message":"nit: 23.09 I guess, right?","commit_id":"155fd68ce49d43ef6e86056b0e2680985988d4f6"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"5030975bc8a99899fcd6161633a86468a148f8f0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"In [1] we added support for FDB learning. In order to avoid issues"},{"line_number":10,"context_line":"due to that table increasing without limits, which will impact OVN"},{"line_number":11,"context_line":"performance, this patch is adding support for its aging mechanisms"},{"line_number":12,"context_line":"which was added in OVN 23.06 in [2]. By default is disabled, so if"},{"line_number":13,"context_line":"`localnet_learn_fdb` is enabled, the new configuration parameters"},{"line_number":14,"context_line":"should be appropriately configured too: `fdb_age_threshold` and"},{"line_number":15,"context_line":"`fdb_removal_limit`"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3618e3de_7dc2079b","line":12,"range":{"start_line":12,"start_character":23,"end_line":12,"end_character":28},"in_reply_to":"4a659dc9_1e331ce5","updated":"2023-10-24 08:25:25.000000000","message":"Done","commit_id":"155fd68ce49d43ef6e86056b0e2680985988d4f6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"6727185c50214a002028e209e6ce9b763d77c014","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"93a6a053_d0b517f8","updated":"2023-09-08 09:46:50.000000000","message":"LGTM just some nit/qq","commit_id":"187f06b866aec02281f1ee5aa080279da7081155"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"7a47b1bcd05f3217b52cfbc825555aab23972e9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3382383b_825eb878","updated":"2023-09-08 10:47:06.000000000","message":"LGTM","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7cd6900a0ba2e7310fbb2357c8e283d9d395f5ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d0abd067_1f28fb52","updated":"2023-09-08 13:45:40.000000000","message":"-1 for the sanity check, still going through the rest. 😄","commit_id":"2e212764d37e20034f59fa6014758351bf1fe955"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"44816f72ab42a20b7a4bcab5d41c98b37ecd83f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"552618c2_fcd4a04d","updated":"2023-10-16 13:49:04.000000000","message":"I made a patch to introduce generic way of configuring NB_Global options table - https://review.opendev.org/c/openstack/neutron/+/896545 With this patch introducing fdb_removal_limit will be just a matter of creating the Conf Opt in the right group, please check it out.","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"549757363c4b69d93eeea22ebbf257b51732534c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a19b9864_b3bd8ab4","updated":"2023-10-10 12:52:38.000000000","message":"LGTM","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"439b78fc772b939316719d1293d6f52038efec8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"13be0100_b0ef4aae","updated":"2023-10-16 08:57:37.000000000","message":"Thanks Luis for working on this!\n\nPatch looks fine but, I think we should have a discussion with Terry about the value of the default aging threshold because I think it\u0027s important to have the same default for FDB as well as MAC_Bindings. Otherwise we will have mixed values for both features and that\u0027s not great for the users.","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"283d96abeffebeb77bab56c84d4b928c8f9b97fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4d02bf88_9837b6a1","updated":"2023-10-16 09:49:29.000000000","message":"We need a sanity check to ensure that if we are using these new parameters, the OVN version supports them (same as you did in \"localnet_learn_fdb\").","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e517f7a911c57778caabf726c855f27afe58fb82","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a73cd433_487ea008","in_reply_to":"4d02bf88_9837b6a1","updated":"2023-10-16 10:08:03.000000000","message":"I removed them, based on a previous comment from Terry as we were not using those properly","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8a8f5c9f2ca55b1af4d440c8a582e086c2b6e1bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b56fa0c5_d52709ea","updated":"2023-10-24 07:41:49.000000000","message":"Looks good for me but I would like e.g. Rodolfo to check and approve it","commit_id":"155fd68ce49d43ef6e86056b0e2680985988d4f6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"60a40ee7303aa385a7480018746de89a650c8975","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"adfbaba7_1428a052","updated":"2023-10-19 09:59:29.000000000","message":"Thanks Luis! It LGTM!","commit_id":"155fd68ce49d43ef6e86056b0e2680985988d4f6"}],"neutron/cmd/sanity/checks.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"7cd6900a0ba2e7310fbb2357c8e283d9d395f5ad","unresolved":true,"context_lines":[{"line_number":55,"context_line":"OVN_NB_DB_SCHEMA_STATELESS_NAT \u003d \u00275.17.0\u0027"},{"line_number":56,"context_line":"OVN_SB_DB_SCHEMA_VIRTUAL_PORT \u003d \u00272.5.0\u0027"},{"line_number":57,"context_line":"OVN_LOCALNET_LEARN_FDB \u003d \u002722.09.0\u0027"},{"line_number":58,"context_line":"OVN_FDB_AGE_THRESHOLD \u003d \u002723.06.0\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class OVNCheckType(enum.Enum):"}],"source_content_type":"text/x-python","patch_set":4,"id":"f22c63d0_bc81ce22","line":58,"updated":"2023-09-08 13:45:40.000000000","message":"The sanity checking tool was designed specifically to avoid doing version number checks[1] , because different distros would backport features to different versions of their releases. The idea was to create tests that tested the functionality of the features. I now see it used primarily for checking version numbers, and I die a little each new version number added to it. :-p\n\nTesting for support of this feature, as it is just a string in the db other_config column, is pretty difficult. But I\u0027m also not sure it\u0027s really necessary. Setting the value in an unsupported version will just be ignored.\n\nI would just remove the sanity check version numbers don\u0027t necessarily mean anything and nothing bad happens if the option is configured and not supported.\n\n[1] commit ab4dc5261eea8662adabd0c326ab6297e6556b32\nAuthor: Terry Wilson \u003ctwilson@redhat.com\u003e\nDate:   Wed Apr 16 21:48:04 2014 -0400\n\n    Remove run-time version checking for openvswitch features\n    \n    The current method of checking openvswitch and kernel versions for\n    specific feature support is brittle, distro-specific and unsupportable.\n    \n    This patch removes the runtime version checks and implements a test\n    script which allows testing specific neutron features or can test\n    that all features required by a specific configuration are available.\n    \n    For example, to test VXLAN support in openvswitch, either:\n    \n      neutron-sanity-check --ovs_vxlan\n    \n    or pass in the deployed configuration files with AGENT/tunnel_types\n    containing \u0027vxlan\u0027, like:\n    \n      neutron-sanity-check --config-file /etc/neutron/plugins/ml2.conf.ini\n    \n    Deployment tools can then test that the required features exist without\n    relying on version numbers and without incurring a penalty every time\n    the agent is started.\n    \n    Implements: blueprint remove-openvswitch-version-check\n    DocImpact\n    Change-Id: I5e822d97b9bece9242ba5ac8901aa0ca4f090cfe","commit_id":"2e212764d37e20034f59fa6014758351bf1fe955"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"7a47b1bcd05f3217b52cfbc825555aab23972e9e","unresolved":true,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dd4e4728_7c572709","line":402,"updated":"2023-09-08 10:47:06.000000000","message":"nit: typo fdb_age_treshold -\u003e fdb_age_threshold","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"f54465c668bc677a0904746542703bc2a3d3295a","unresolved":true,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"fcdef2f4_d23ad377","line":402,"in_reply_to":"b4a163b2_5882a5c5","updated":"2023-09-12 16:59:41.000000000","message":"The only problem I see with this is that it requires an OVN that actually supports FDB aging to pass, and I don\u0027t think FDB aging actually exists in an OVN release yet. I think we\u0027d have to bump OVN_BRANCH to be able to functionally test this.","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"c3f38f87120c577a8ba032e658bd6b679a9ebcce","unresolved":true,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ea42d4c8_020121d4","line":402,"in_reply_to":"dd4e4728_7c572709","updated":"2023-09-08 11:04:28.000000000","message":"How are the tests passing with this typo?\nThe code specifically looks for this setting in the other_config\n\nhttps://github.com/ovn-org/ovn/blob/bfc39651b1bc5895e4d9cf968539704813307034/northd/aging.c#L297","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"d2d71199c1c9066d72bfb9575c8e89dd084ee6f1","unresolved":true,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ee88b694_caf62d72","line":402,"in_reply_to":"ea42d4c8_020121d4","updated":"2023-09-08 11:05:14.000000000","message":"How are the tests passing? because there\u0027s no tests :p","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"e0514263597f72e2c1476d695597ac24b401f466","unresolved":true,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"b4a163b2_5882a5c5","line":402,"in_reply_to":"ee88b694_caf62d72","updated":"2023-09-08 11:07:35.000000000","message":"I\u0027d suggest a functional test that configures the threshold to eg. 2 seconds, forces an entry in the DB, and checks it does not exist after 2 secs.","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":399,"context_line":"BRIDGE_REDIRECT_TYPE \u003d \"bridged\""},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_treshold\u0027"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"# Port Binding types"},{"line_number":405,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"f44ca71f_5aa6de22","line":402,"in_reply_to":"fcdef2f4_d23ad377","updated":"2023-10-19 06:42:11.000000000","message":"functional testing added to ensure the config option is applied. OVN functionality is covered in core OVN","commit_id":"fcafa2c6621349528357ad0a59612522d6a35ba4"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_OPTIONS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_threshold\u0027"},{"line_number":403,"context_line":"LS_OPTIONS_FDB_REMOVAL_LIMIT \u003d \u0027fdb_removal_limit\u0027"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"# Port Binding types"},{"line_number":406,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"85466aa3_dfb9ddc2","line":403,"updated":"2023-10-18 14:29:08.000000000","message":"Seems like this remained here from the previous PS","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"# FDB AGE Settings"},{"line_number":402,"context_line":"LS_OPTIONS_FDB_AGE_THRESHOLD \u003d \u0027fdb_age_threshold\u0027"},{"line_number":403,"context_line":"LS_OPTIONS_FDB_REMOVAL_LIMIT \u003d \u0027fdb_removal_limit\u0027"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"# Port Binding types"},{"line_number":406,"context_line":"PB_TYPE_VIRTUAL \u003d \u0027virtual\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"a9bda807_f12998c8","line":403,"in_reply_to":"85466aa3_dfb9ddc2","updated":"2023-10-18 15:25:17.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"}],"neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py":[{"author":{"_account_id":34451,"name":"Fernando Royo","email":"froyo@redhat.com","username":"froyo"},"change_message_id":"6727185c50214a002028e209e6ce9b763d77c014","unresolved":true,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"def get_fdb_removal_limit():"},{"line_number":356,"context_line":"    return cfg.CONF.fdb_removal_limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"06549b58_b998b43b","line":356,"updated":"2023-09-08 09:46:50.000000000","message":"where is this CONF defined? or where this method called?","commit_id":"187f06b866aec02281f1ee5aa080279da7081155"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"f8df78f4aa220387256a998dd869ce852a423cec","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"def get_fdb_removal_limit():"},{"line_number":356,"context_line":"    return cfg.CONF.fdb_removal_limit"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0a46_0cdacd92","line":356,"in_reply_to":"06549b58_b998b43b","updated":"2023-09-08 14:51:44.000000000","message":"Done","commit_id":"187f06b866aec02281f1ee5aa080279da7081155"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"35deea766dd817d5dca890e1c06bfae9e67b401e","unresolved":true,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"def get_fdb_age_threshold():"},{"line_number":352,"context_line":"    return cfg.CONF.fdb_age_threshold"}],"source_content_type":"text/x-python","patch_set":5,"id":"574acff8_2077a1d1","line":352,"range":{"start_line":352,"start_character":11,"end_line":352,"end_character":37},"updated":"2023-09-12 16:45:07.000000000","message":"The NB DB schema requires this option to be set as a string as other_config is a map of string:string. It\u0027s one of those fun settings that in the XML description is described as an integer with certain limits, but in the DB must be set as a string.\n\nI found in https://review.opendev.org/c/openstack/neutron/+/893575 that it was easiest to just leave the option an IntOpt so you can set limits on it if you\u0027d like, then return it as a string here so you don\u0027t have to convert everywhere else (and never access cfg.CONF directly to pass it to the DB).","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"bf7063edcfd48eb7a90a8941d0f7b39583cc4f35","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"def get_fdb_age_threshold():"},{"line_number":352,"context_line":"    return cfg.CONF.fdb_age_threshold"}],"source_content_type":"text/x-python","patch_set":5,"id":"b3fbec22_697f1287","line":352,"range":{"start_line":352,"start_character":11,"end_line":352,"end_character":37},"in_reply_to":"574acff8_2077a1d1","updated":"2023-09-13 07:44:37.000000000","message":"Done","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"439b78fc772b939316719d1293d6f52038efec8e","unresolved":true,"context_lines":[{"line_number":226,"context_line":"                       \u0027newer.\u0027)),"},{"line_number":227,"context_line":"    cfg.IntOpt(\u0027fdb_age_threshold\u0027,"},{"line_number":228,"context_line":"               min\u003d0,"},{"line_number":229,"context_line":"               default\u003d0,"},{"line_number":230,"context_line":"               help\u003d_(\u0027The number of seconds to keep FDB entries in the OVN \u0027"},{"line_number":231,"context_line":"                      \u0027DB. The value defaults to 0, which means disabled. \u0027"},{"line_number":232,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"}],"source_content_type":"text/x-python","patch_set":12,"id":"c08b5e38_e6362bdf","line":229,"updated":"2023-10-16 08:57:37.000000000","message":"I think it would be important for MAC_Bindings and FDB to have the same default when it comes to aging otherwise it will just make things more confusing for users.\n\nI see some conversations were already started at https://review.opendev.org/c/openstack/neutron/+/893575/5/neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py#229\n\nLet\u0027s make sure both patches have same defaults.","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"d085d124dd45d066a9a900cc2a5e6b378221e9f1","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                       \u0027newer.\u0027)),"},{"line_number":227,"context_line":"    cfg.IntOpt(\u0027fdb_age_threshold\u0027,"},{"line_number":228,"context_line":"               min\u003d0,"},{"line_number":229,"context_line":"               default\u003d0,"},{"line_number":230,"context_line":"               help\u003d_(\u0027The number of seconds to keep FDB entries in the OVN \u0027"},{"line_number":231,"context_line":"                      \u0027DB. The value defaults to 0, which means disabled. \u0027"},{"line_number":232,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"}],"source_content_type":"text/x-python","patch_set":12,"id":"241a7659_b9418226","line":229,"in_reply_to":"486a9c4e_7fcc03dd","updated":"2023-10-17 06:53:19.000000000","message":"Done","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e517f7a911c57778caabf726c855f27afe58fb82","unresolved":true,"context_lines":[{"line_number":226,"context_line":"                       \u0027newer.\u0027)),"},{"line_number":227,"context_line":"    cfg.IntOpt(\u0027fdb_age_threshold\u0027,"},{"line_number":228,"context_line":"               min\u003d0,"},{"line_number":229,"context_line":"               default\u003d0,"},{"line_number":230,"context_line":"               help\u003d_(\u0027The number of seconds to keep FDB entries in the OVN \u0027"},{"line_number":231,"context_line":"                      \u0027DB. The value defaults to 0, which means disabled. \u0027"},{"line_number":232,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"}],"source_content_type":"text/x-python","patch_set":12,"id":"486a9c4e_7fcc03dd","line":229,"in_reply_to":"709ba323_8ef42175","updated":"2023-10-16 10:08:03.000000000","message":"agree","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"283d96abeffebeb77bab56c84d4b928c8f9b97fc","unresolved":true,"context_lines":[{"line_number":226,"context_line":"                       \u0027newer.\u0027)),"},{"line_number":227,"context_line":"    cfg.IntOpt(\u0027fdb_age_threshold\u0027,"},{"line_number":228,"context_line":"               min\u003d0,"},{"line_number":229,"context_line":"               default\u003d0,"},{"line_number":230,"context_line":"               help\u003d_(\u0027The number of seconds to keep FDB entries in the OVN \u0027"},{"line_number":231,"context_line":"                      \u0027DB. The value defaults to 0, which means disabled. \u0027"},{"line_number":232,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"}],"source_content_type":"text/x-python","patch_set":12,"id":"709ba323_8ef42175","line":229,"in_reply_to":"c08b5e38_e6362bdf","updated":"2023-10-16 09:49:29.000000000","message":"I agree, we need to push both patches with the same value.","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":253,"context_line":"               help\u003d_(\u0027FDB aging bulk removal limit. This limits how many \u0027"},{"line_number":254,"context_line":"                      \u0027rows can expire in a single transaction. Default \u0027"},{"line_number":255,"context_line":"                      \u0027is 0, which is unlimited. When the limit is reached, \u0027"},{"line_number":256,"context_line":"                      \u0027the next batch removal is delayed by 5 s. \u0027"},{"line_number":257,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"},{"line_number":258,"context_line":"]"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9ddc8ae2_126cb178","line":256,"range":{"start_line":256,"start_character":60,"end_line":256,"end_character":63},"updated":"2023-10-18 20:39:17.000000000","message":"\"5 seconds\"?","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":253,"context_line":"               help\u003d_(\u0027FDB aging bulk removal limit. This limits how many \u0027"},{"line_number":254,"context_line":"                      \u0027rows can expire in a single transaction. Default \u0027"},{"line_number":255,"context_line":"                      \u0027is 0, which is unlimited. When the limit is reached, \u0027"},{"line_number":256,"context_line":"                      \u0027the next batch removal is delayed by 5 s. \u0027"},{"line_number":257,"context_line":"                      \u0027This is supported by OVN \u003e\u003d 23.09.\u0027)),"},{"line_number":258,"context_line":"]"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"fda31a35_4d35cf7c","line":256,"range":{"start_line":256,"start_character":60,"end_line":256,"end_character":63},"in_reply_to":"9ddc8ae2_126cb178","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"35deea766dd817d5dca890e1c06bfae9e67b401e","unresolved":true,"context_lines":[{"line_number":828,"context_line":"            return"},{"line_number":829,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":830,"context_line":"        cmds \u003d []"},{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"09d1ec12_ff6bc140","line":831,"range":{"start_line":831,"start_character":40,"end_line":831,"end_character":53},"updated":"2023-09-12 16:45:07.000000000","message":"are VLAN networks the only ones affected by this?","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"bf7063edcfd48eb7a90a8941d0f7b39583cc4f35","unresolved":false,"context_lines":[{"line_number":828,"context_line":"            return"},{"line_number":829,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":830,"context_line":"        cmds \u003d []"},{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"}],"source_content_type":"text/x-python","patch_set":5,"id":"667ee417_d2a4cdc0","line":831,"range":{"start_line":831,"start_character":40,"end_line":831,"end_character":53},"in_reply_to":"09d1ec12_ff6bc140","updated":"2023-09-13 07:44:37.000000000","message":"nop, this is copy/past error, it should be provider networks...","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"35deea766dd817d5dca890e1c06bfae9e67b401e","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":835,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":836,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":837,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1612312e_11bc2e1a","line":834,"range":{"start_line":834,"start_character":47,"end_line":834,"end_character":77},"updated":"2023-09-12 16:45:07.000000000","message":"I note in the releasenotes of the original patch that it says:\n\n\u003e     In OVN 22.09 the option \"localnet_learn_fdb\" was added, enabling localnet ports to learn MAC addresses and store them at the FDB table. There is no aging mechanism for those MACs (*that is the reason for not having this option enabled by default*) and therefore it needs to be used with care, specially when provider networks are big. It is recommended to perform periodic manual cleanups of FDB table, to avoid scalability issues -- until OVN implements an aging mechanism for this, tracked at https://bugzilla.redhat.com/show_bug.cgi?id\u003d2179942.\n\nDoes this mean that this *should* be enabled by default once we are able to set the aging mechanism? I realize that we don\u0027t have a good test for whether support exists in OVN now (I\u0027m asking the devs for a way to fix that), just wondering about the future.","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"e517f7a911c57778caabf726c855f27afe58fb82","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":835,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":836,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":837,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"999ffd76_171b7fea","line":834,"range":{"start_line":834,"start_character":47,"end_line":834,"end_character":77},"in_reply_to":"0d647a8f_ed4a55a1","updated":"2023-10-16 10:08:03.000000000","message":"IMO that depends on the default value we agree for the aging. Also, it seems there may be some issues with the fbd learning itself so I would keep it disabled until that is clarified/fixed","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"bf7063edcfd48eb7a90a8941d0f7b39583cc4f35","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":835,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":836,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":837,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"84549c0a_7c09d076","line":834,"range":{"start_line":834,"start_character":47,"end_line":834,"end_character":77},"in_reply_to":"1612312e_11bc2e1a","updated":"2023-09-13 07:44:37.000000000","message":"I suppose it should not as only some specific configurations would care of it. And if enabling it by default, you need to provide good defaults for these new values too that don\u0027t break other use case. I don\u0027t have a strong opinion though.","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"283d96abeffebeb77bab56c84d4b928c8f9b97fc","unresolved":true,"context_lines":[{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":835,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":836,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":837,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0d647a8f_ed4a55a1","line":834,"range":{"start_line":834,"start_character":47,"end_line":834,"end_character":77},"in_reply_to":"84549c0a_7c09d076","updated":"2023-10-16 09:49:29.000000000","message":"Terry made a good point here. Now we have a mechanism to delete older entries, that will avoid the FDB table unlimited expansion, we should change the default value of \"localnet_learn_fdb\". Of course, that will require a version check because \"localnet_learn_fdb\" is available since 22.09 and the aging parameters sin 23.06.","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4dac688ccfcef0d0889ea3ee71bf42ee5afa0233","unresolved":false,"context_lines":[{"line_number":831,"context_line":"        # Get router ports belonging to VLAN networks"},{"line_number":832,"context_line":"        nets \u003d self._ovn_client._plugin.get_networks(context)"},{"line_number":833,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":834,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":835,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":836,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":837,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c4d60dbe_bafc6147","line":834,"range":{"start_line":834,"start_character":47,"end_line":834,"end_character":77},"in_reply_to":"999ffd76_171b7fea","updated":"2023-10-18 14:48:25.000000000","message":"Done","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"35deea766dd817d5dca890e1c06bfae9e67b401e","unresolved":true,"context_lines":[{"line_number":838,"context_line":"            ls_fdb_age_threshold \u003d ls.other_config.get("},{"line_number":839,"context_line":"                ovn_const.LS_FDB_AGE_THRESHOLD)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"            if config_fdb_age_threshold:"},{"line_number":842,"context_line":"                if ls_fdb_age_threshold !\u003d config_fdb_age_threshold:"},{"line_number":843,"context_line":"                    other_config \u003d {ovn_const.LS_FDB_AGE_THRESHOLD:"},{"line_number":844,"context_line":"                                    config_fdb_age_threshold}"}],"source_content_type":"text/x-python","patch_set":5,"id":"73667d54_aeb3f5c5","line":841,"updated":"2023-09-12 16:45:07.000000000","message":"If we end up returning a string from `get_fdb_age_threshold()` this will break since `if \"0\"` would return true.\n\nAlso, do we even need to check this? We could just set it to the configured value if it differs from what is in the DB.","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"bf7063edcfd48eb7a90a8941d0f7b39583cc4f35","unresolved":false,"context_lines":[{"line_number":838,"context_line":"            ls_fdb_age_threshold \u003d ls.other_config.get("},{"line_number":839,"context_line":"                ovn_const.LS_FDB_AGE_THRESHOLD)"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"            if config_fdb_age_threshold:"},{"line_number":842,"context_line":"                if ls_fdb_age_threshold !\u003d config_fdb_age_threshold:"},{"line_number":843,"context_line":"                    other_config \u003d {ovn_const.LS_FDB_AGE_THRESHOLD:"},{"line_number":844,"context_line":"                                    config_fdb_age_threshold}"}],"source_content_type":"text/x-python","patch_set":5,"id":"79872761_7f9f340b","line":841,"in_reply_to":"73667d54_aeb3f5c5","updated":"2023-09-13 07:44:37.000000000","message":"Done","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"439b78fc772b939316719d1293d6f52038efec8e","unresolved":true,"context_lines":[{"line_number":846,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":847,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":848,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":849,"context_line":"        if cmds:"},{"line_number":850,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":851,"context_line":"                for cmd in cmds:"},{"line_number":852,"context_line":"                    txn.add(cmd)"}],"source_content_type":"text/x-python","patch_set":12,"id":"120f23b8_e508a951","line":849,"range":{"start_line":849,"start_character":8,"end_line":849,"end_character":16},"updated":"2023-10-16 08:57:37.000000000","message":"This will always be true cause of the append at L831","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"283d96abeffebeb77bab56c84d4b928c8f9b97fc","unresolved":true,"context_lines":[{"line_number":846,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":847,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":848,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":849,"context_line":"        if cmds:"},{"line_number":850,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":851,"context_line":"                for cmd in cmds:"},{"line_number":852,"context_line":"                    txn.add(cmd)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da8ecc0b_3bc2f198","line":849,"range":{"start_line":849,"start_character":8,"end_line":849,"end_character":16},"in_reply_to":"120f23b8_e508a951","updated":"2023-10-16 09:49:29.000000000","message":"+1","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"4c146ef2c22c35490cac83ccfec4427ff78fb82d","unresolved":false,"context_lines":[{"line_number":846,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":847,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":848,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":849,"context_line":"        if cmds:"},{"line_number":850,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":851,"context_line":"                for cmd in cmds:"},{"line_number":852,"context_line":"                    txn.add(cmd)"}],"source_content_type":"text/x-python","patch_set":12,"id":"eef2c68e_abaa469b","line":849,"range":{"start_line":849,"start_character":8,"end_line":849,"end_character":16},"in_reply_to":"da8ecc0b_3bc2f198","updated":"2023-10-17 06:51:43.000000000","message":"as part of patch https://review.opendev.org/c/openstack/neutron/+/896545 the global settings are managed in a different task, so not always there will be cmds now","commit_id":"dbc3ca925aafff2b435e5b1ed842b7692d861c00"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    # A static spacing value is used here, but this method will only run"},{"line_number":802,"context_line":"    # once per lock due to the use of periodics.NeverAgain()."},{"line_number":803,"context_line":"    @periodics.periodic(spacing\u003d600, run_immediately\u003dTrue)"},{"line_number":804,"context_line":"    def check_fdb_aging_settings(self):"},{"line_number":805,"context_line":"        \"\"\"Check FDB aging settings"},{"line_number":806,"context_line":"        Ensure FDB aging settings are enforced."}],"source_content_type":"text/x-python","patch_set":13,"id":"4a826a1e_d3e8c3fd","line":803,"range":{"start_line":803,"start_character":0,"end_line":803,"end_character":58},"updated":"2023-10-18 14:29:08.000000000","message":"`@has_lock_periodic(spacing\u003d600, run_immediately\u003dTrue)`","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":false,"context_lines":[{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    # A static spacing value is used here, but this method will only run"},{"line_number":802,"context_line":"    # once per lock due to the use of periodics.NeverAgain()."},{"line_number":803,"context_line":"    @periodics.periodic(spacing\u003d600, run_immediately\u003dTrue)"},{"line_number":804,"context_line":"    def check_fdb_aging_settings(self):"},{"line_number":805,"context_line":"        \"\"\"Check FDB aging settings"},{"line_number":806,"context_line":"        Ensure FDB aging settings are enforced."}],"source_content_type":"text/x-python","patch_set":13,"id":"d55cf727_db806da9","line":803,"range":{"start_line":803,"start_character":0,"end_line":803,"end_character":58},"in_reply_to":"4a826a1e_d3e8c3fd","updated":"2023-10-18 15:25:17.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4dac688ccfcef0d0889ea3ee71bf42ee5afa0233","unresolved":true,"context_lines":[{"line_number":805,"context_line":"        \"\"\"Check FDB aging settings"},{"line_number":806,"context_line":"        Ensure FDB aging settings are enforced."},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        if not self.has_lock:"},{"line_number":809,"context_line":"            return"},{"line_number":810,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":811,"context_line":"        cmds \u003d []"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"43801e2a_43e2d652","line":809,"range":{"start_line":808,"start_character":0,"end_line":809,"end_character":18},"updated":"2023-10-18 14:48:25.000000000","message":"will also be removed with the `@has_lock_periodic`","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        \"\"\"Check FDB aging settings"},{"line_number":806,"context_line":"        Ensure FDB aging settings are enforced."},{"line_number":807,"context_line":"        \"\"\""},{"line_number":808,"context_line":"        if not self.has_lock:"},{"line_number":809,"context_line":"            return"},{"line_number":810,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":811,"context_line":"        cmds \u003d []"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3bb7be0c_7123532b","line":809,"range":{"start_line":808,"start_character":0,"end_line":809,"end_character":18},"in_reply_to":"43801e2a_43e2d652","updated":"2023-10-18 15:25:17.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":815,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":816,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":817,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":818,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":819,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"},{"line_number":820,"context_line":"            ls_fdb_age_threshold \u003d ls.other_config.get("},{"line_number":821,"context_line":"                ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD)"}],"source_content_type":"text/x-python","patch_set":13,"id":"064eda47_bc6232a2","line":818,"range":{"start_line":818,"start_character":0,"end_line":818,"end_character":40},"updated":"2023-10-18 14:29:08.000000000","message":"Can we do it with a single iteration and avoid L815? Large environments can have thousands of networks.\n```\nfor n_network in nets:\n    ls_name \u003d utils.ovn_name(net[\u0027id\u0027])\n    if not utils.is_provider_network(n_network):\n        continue\n        \n    ...\n```\nI know this is executed just once at the start but still, it\u0027s nice if we could avoid double-iteration.","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        ls_name_provnets \u003d [utils.ovn_name(net[\u0027id\u0027])"},{"line_number":816,"context_line":"                            for net in nets if utils.is_provider_network(net)]"},{"line_number":817,"context_line":"        config_fdb_age_threshold \u003d ovn_conf.get_fdb_age_threshold()"},{"line_number":818,"context_line":"        for ls_name in ls_name_provnets:"},{"line_number":819,"context_line":"            ls \u003d self._nb_idl.get_lswitch(ls_name)"},{"line_number":820,"context_line":"            ls_fdb_age_threshold \u003d ls.other_config.get("},{"line_number":821,"context_line":"                ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7d040501_392eeaba","line":818,"range":{"start_line":818,"start_character":0,"end_line":818,"end_character":40},"in_reply_to":"064eda47_bc6232a2","updated":"2023-10-18 15:25:17.000000000","message":"well... it is not iterating twice, as in the second one we only do the provider networks, but no strong opinion I\u0027ll do it this way","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4dac688ccfcef0d0889ea3ee71bf42ee5afa0233","unresolved":true,"context_lines":[{"line_number":826,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":827,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":828,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":829,"context_line":"        if cmds:"},{"line_number":830,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":831,"context_line":"                for cmd in cmds:"},{"line_number":832,"context_line":"                    txn.add(cmd)"},{"line_number":833,"context_line":"        raise periodics.NeverAgain()"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    # TODO(fnordahl): Remove this in the B+3 cycle. This method removes the"}],"source_content_type":"text/x-python","patch_set":13,"id":"d1a2c81e_43015d8f","line":832,"range":{"start_line":829,"start_character":1,"end_line":832,"end_character":32},"updated":"2023-10-18 14:48:25.000000000","message":"nit: it increases indentation level, so I get wanting to do it this way too. But we do end up storing the list of commands twice this way as opposed to just putting the `with ...` higher and doing the `txn.add()` calls inline.","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1ba9580c7a643c31f37265792855efc689aa3b7a","unresolved":true,"context_lines":[{"line_number":826,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":827,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":828,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":829,"context_line":"        if cmds:"},{"line_number":830,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":831,"context_line":"                for cmd in cmds:"},{"line_number":832,"context_line":"                    txn.add(cmd)"},{"line_number":833,"context_line":"        raise periodics.NeverAgain()"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    # TODO(fnordahl): Remove this in the B+3 cycle. This method removes the"}],"source_content_type":"text/x-python","patch_set":13,"id":"499bb8ae_b7b7de13","line":832,"range":{"start_line":829,"start_character":1,"end_line":832,"end_character":32},"in_reply_to":"c8391926_fc682b3b","updated":"2023-10-18 16:12:05.000000000","message":"That\u0027s fine. To explain, `txn.add()` adds a command to a list of commands stored on the txn. So making a separate list of commands and then looping through that list of commands just to then add that list of commands each to that other list is redundant and doubles the amount of memory used and times you have to access each element of the list. It\u0027ll only be the number of provider nets, so probably not a big deal.","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":true,"context_lines":[{"line_number":826,"context_line":"                cmds.append(self._nb_idl.db_set("},{"line_number":827,"context_line":"                    \u0027Logical_Switch\u0027, ls_name,"},{"line_number":828,"context_line":"                    (\u0027other_config\u0027, other_config)))"},{"line_number":829,"context_line":"        if cmds:"},{"line_number":830,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":831,"context_line":"                for cmd in cmds:"},{"line_number":832,"context_line":"                    txn.add(cmd)"},{"line_number":833,"context_line":"        raise periodics.NeverAgain()"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    # TODO(fnordahl): Remove this in the B+3 cycle. This method removes the"}],"source_content_type":"text/x-python","patch_set":13,"id":"c8391926_fc682b3b","line":832,"range":{"start_line":829,"start_character":1,"end_line":832,"end_character":32},"in_reply_to":"d1a2c81e_43015d8f","updated":"2023-10-18 15:25:17.000000000","message":"I\u0027m not sure I get this, plus this is how it is done for other methods in here, I\u0027ll leave it as is and we can change later for all if needed","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"35deea766dd817d5dca890e1c06bfae9e67b401e","unresolved":true,"context_lines":[{"line_number":1913,"context_line":"                                  ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":1914,"context_line":"                                  ovn_const.VLAN_PASSTHRU: vlan_transparent}"},{"line_number":1915,"context_line":"        if (utils.is_provider_network(network) and"},{"line_number":1916,"context_line":"                ovn_conf.get_fdb_age_threshold()):"},{"line_number":1917,"context_line":"            params[\u0027other_config\u0027][ovn_const.LS_FDB_AGE_THRESHOLD] \u003d ("},{"line_number":1918,"context_line":"                ovn_conf.get_fdb_age_threshold())"},{"line_number":1919,"context_line":"        return params"}],"source_content_type":"text/x-python","patch_set":5,"id":"65b1dcbf_67d05604","line":1916,"range":{"start_line":1916,"start_character":16,"end_line":1916,"end_character":50},"updated":"2023-09-12 16:45:07.000000000","message":"We\u0027re doing the write to the DB anyway, seems like we could just always write the value even if it is the default 0 and it\u0027d make the syncing code simpler.","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"bf7063edcfd48eb7a90a8941d0f7b39583cc4f35","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"                                  ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":1914,"context_line":"                                  ovn_const.VLAN_PASSTHRU: vlan_transparent}"},{"line_number":1915,"context_line":"        if (utils.is_provider_network(network) and"},{"line_number":1916,"context_line":"                ovn_conf.get_fdb_age_threshold()):"},{"line_number":1917,"context_line":"            params[\u0027other_config\u0027][ovn_const.LS_FDB_AGE_THRESHOLD] \u003d ("},{"line_number":1918,"context_line":"                ovn_conf.get_fdb_age_threshold())"},{"line_number":1919,"context_line":"        return params"}],"source_content_type":"text/x-python","patch_set":5,"id":"4c447a7e_14a20ebe","line":1916,"range":{"start_line":1916,"start_character":16,"end_line":1916,"end_character":50},"in_reply_to":"65b1dcbf_67d05604","updated":"2023-09-13 07:44:37.000000000","message":"Done","commit_id":"1c795bd7789609ecb1c1bd098e8b731af8624c29"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":1914,"context_line":"                                  ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":1915,"context_line":"                                  ovn_const.VLAN_PASSTHRU: vlan_transparent}"},{"line_number":1916,"context_line":"        if utils.is_provider_network(network):"},{"line_number":1917,"context_line":"            params[\u0027other_config\u0027][ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD] \u003d ("},{"line_number":1918,"context_line":"                ovn_conf.get_fdb_age_threshold())"},{"line_number":1919,"context_line":"        return params"},{"line_number":1920,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"4679affc_b02a6afa","line":1917,"updated":"2023-10-18 20:39:17.000000000","message":"As I suggested in Terry\u0027s patch, it would be nice if we avoid filling in the OVN database with keys that have no effect (in the default case of zero threshold.)","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":true,"context_lines":[{"line_number":1914,"context_line":"                                  ovn_const.MCAST_FLOOD_UNREGISTERED: \u0027false\u0027,"},{"line_number":1915,"context_line":"                                  ovn_const.VLAN_PASSTHRU: vlan_transparent}"},{"line_number":1916,"context_line":"        if utils.is_provider_network(network):"},{"line_number":1917,"context_line":"            params[\u0027other_config\u0027][ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD] \u003d ("},{"line_number":1918,"context_line":"                ovn_conf.get_fdb_age_threshold())"},{"line_number":1919,"context_line":"        return params"},{"line_number":1920,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"35339f7c_45a5d066","line":1917,"in_reply_to":"4679affc_b02a6afa","updated":"2023-10-19 06:42:11.000000000","message":"I have it like that initially, but got removed upon suggestion. This complicates a bit the logic here and in the maintenance task as you need to consider the differences between 0 and not configured and add or delete, while if we add it always we don\u0027t need to care about it","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_maintenance.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":61,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY) \u003d\u003d name):"},{"line_number":62,"context_line":"                return row"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _create_network(self, name, external\u003dFalse, provider\u003dFalse):"},{"line_number":65,"context_line":"        data \u003d {\u0027network\u0027: {\u0027name\u0027: name,"},{"line_number":66,"context_line":"                            extnet_apidef.EXTERNAL: external}}"},{"line_number":67,"context_line":"        if provider:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ebdc0f39_70ca5fd1","line":64,"range":{"start_line":64,"start_character":61,"end_line":64,"end_character":66},"updated":"2023-10-18 14:29:08.000000000","message":"nit: Perhaps `None` would make more sense here to give a hint this is not a boolean if passed.","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY) \u003d\u003d name):"},{"line_number":62,"context_line":"                return row"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _create_network(self, name, external\u003dFalse, provider\u003dFalse):"},{"line_number":65,"context_line":"        data \u003d {\u0027network\u0027: {\u0027name\u0027: name,"},{"line_number":66,"context_line":"                            extnet_apidef.EXTERNAL: external}}"},{"line_number":67,"context_line":"        if provider:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfd67bb8_dd9b9c5b","line":64,"range":{"start_line":64,"start_character":61,"end_line":64,"end_character":66},"in_reply_to":"2ec379aa_39746500","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":true,"context_lines":[{"line_number":61,"context_line":"                    ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY) \u003d\u003d name):"},{"line_number":62,"context_line":"                return row"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _create_network(self, name, external\u003dFalse, provider\u003dFalse):"},{"line_number":65,"context_line":"        data \u003d {\u0027network\u0027: {\u0027name\u0027: name,"},{"line_number":66,"context_line":"                            extnet_apidef.EXTERNAL: external}}"},{"line_number":67,"context_line":"        if provider:"}],"source_content_type":"text/x-python","patch_set":13,"id":"2ec379aa_39746500","line":64,"range":{"start_line":64,"start_character":61,"end_line":64,"end_character":66},"in_reply_to":"ebdc0f39_70ca5fd1","updated":"2023-10-18 15:25:17.000000000","message":"ok, I used False as that was done for external... but yeah, I agree","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def test_check_for_aging_settings(self):"},{"line_number":765,"context_line":"        net \u003d self._create_network(\u0027net\u0027, provider\u003d\u0027datacentre\u0027)"},{"line_number":766,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":767,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":768,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        self.assertEqual(\u00270\u0027,"},{"line_number":771,"context_line":"            ls[\u0027other_config\u0027].get(ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD))"}],"source_content_type":"text/x-python","patch_set":13,"id":"b79210fa_3ed798b7","line":768,"range":{"start_line":766,"start_character":8,"end_line":768,"end_character":32},"updated":"2023-10-18 14:29:08.000000000","message":"Why not using `get_lswitch` ?","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"abc258b3bf7d4883af4ddb0902f944f09ec92573","unresolved":true,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def test_check_for_aging_settings(self):"},{"line_number":765,"context_line":"        net \u003d self._create_network(\u0027net\u0027, provider\u003d\u0027datacentre\u0027)"},{"line_number":766,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":767,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":768,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        self.assertEqual(\u00270\u0027,"},{"line_number":771,"context_line":"            ls[\u0027other_config\u0027].get(ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD))"}],"source_content_type":"text/x-python","patch_set":13,"id":"bac648b3_9ed12def","line":768,"range":{"start_line":766,"start_character":8,"end_line":768,"end_character":32},"in_reply_to":"71e8c8d6_dfdcbb17","updated":"2023-10-18 15:46:47.000000000","message":"which is correct but why not using it here? we don\u0027t test `get_lswitch()` with this test - we must rely on it that it works","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"b251a7a495b702046093db601f10b6ad1108fcb6","unresolved":true,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def test_check_for_aging_settings(self):"},{"line_number":765,"context_line":"        net \u003d self._create_network(\u0027net\u0027, provider\u003d\u0027datacentre\u0027)"},{"line_number":766,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":767,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":768,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        self.assertEqual(\u00270\u0027,"},{"line_number":771,"context_line":"            ls[\u0027other_config\u0027].get(ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD))"}],"source_content_type":"text/x-python","patch_set":13,"id":"71e8c8d6_dfdcbb17","line":768,"range":{"start_line":766,"start_character":8,"end_line":768,"end_character":32},"in_reply_to":"b79210fa_3ed798b7","updated":"2023-10-18 15:25:17.000000000","message":"this is what is used in the other method","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def test_check_for_aging_settings(self):"},{"line_number":765,"context_line":"        net \u003d self._create_network(\u0027net\u0027, provider\u003d\u0027datacentre\u0027)"},{"line_number":766,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":767,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":768,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"        self.assertEqual(\u00270\u0027,"},{"line_number":771,"context_line":"            ls[\u0027other_config\u0027].get(ovn_const.LS_OPTIONS_FDB_AGE_THRESHOLD))"}],"source_content_type":"text/x-python","patch_set":13,"id":"c493cf92_cec74c68","line":768,"range":{"start_line":766,"start_character":8,"end_line":768,"end_character":32},"in_reply_to":"bac648b3_9ed12def","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f2d467251cee0deb29fe51ec9a96d7e2687512b0","unresolved":true,"context_lines":[{"line_number":778,"context_line":"        self.assertRaises(periodics.NeverAgain,"},{"line_number":779,"context_line":"                          self.maint.check_fdb_aging_settings)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":782,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":783,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"369be21c_7c6ad805","line":781,"range":{"start_line":781,"start_character":25,"end_line":781,"end_character":32},"updated":"2023-10-18 14:29:08.000000000","message":"Ditto","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"276f0219b4853c3a977d6e7376c35c82e84416c2","unresolved":false,"context_lines":[{"line_number":778,"context_line":"        self.assertRaises(periodics.NeverAgain,"},{"line_number":779,"context_line":"                          self.maint.check_fdb_aging_settings)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        ls \u003d self.nb_api.db_find(\u0027Logical_Switch\u0027,"},{"line_number":782,"context_line":"            (\u0027name\u0027, \u0027\u003d\u0027, utils.ovn_name(net[\u0027id\u0027]))).execute("},{"line_number":783,"context_line":"            check_error\u003dTrue)[0]"},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"053914ff_f6305f59","line":781,"range":{"start_line":781,"start_character":25,"end_line":781,"end_character":32},"in_reply_to":"369be21c_7c6ad805","updated":"2023-10-19 06:43:03.000000000","message":"Done","commit_id":"e18aeda68c367676be4851bc0fc29f7a2eae9c80"}],"releasenotes/notes/support-fdb-aging-b9ab82d75db81bbc.yaml":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In OVN 22.09 the option \"localnet_learn_fdb\" was added, enabling localnet"},{"line_number":5,"context_line":"    ports to learn MAC addresses and store them at the FDB table. There was no"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"f0ba349a_4fdf808c","line":2,"updated":"2023-10-18 20:39:17.000000000","message":"the mac binding counterpart patch from Terry lists the parallel mechanism in `features`. I think you should do the same here.","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In OVN 22.09 the option \"localnet_learn_fdb\" was added, enabling localnet"},{"line_number":5,"context_line":"    ports to learn MAC addresses and store them at the FDB table. There was no"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fe2c4601_1c62138f","line":2,"in_reply_to":"f0ba349a_4fdf808c","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In OVN 22.09 the option \"localnet_learn_fdb\" was added, enabling localnet"},{"line_number":5,"context_line":"    ports to learn MAC addresses and store them at the FDB table. There was no"},{"line_number":6,"context_line":"    aging mechanism for those MACs until OVN 23.06, where the configuration"},{"line_number":7,"context_line":"    option \"fdb_age_threshold\" was added. This enables to set the maximum time"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"c74f852f_47747c19","line":4,"range":{"start_line":4,"start_character":28,"end_line":4,"end_character":47},"updated":"2023-10-18 20:39:17.000000000","message":"Ideally, we\u0027d use proper formatting for option names and such, by using the two-backticks for these. It can of course be cleaned up later prior to final release, but you could as well include this here.","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    In OVN 22.09 the option \"localnet_learn_fdb\" was added, enabling localnet"},{"line_number":5,"context_line":"    ports to learn MAC addresses and store them at the FDB table. There was no"},{"line_number":6,"context_line":"    aging mechanism for those MACs until OVN 23.06, where the configuration"},{"line_number":7,"context_line":"    option \"fdb_age_threshold\" was added. This enables to set the maximum time"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"e70ab6ab_a7a060c0","line":4,"range":{"start_line":4,"start_character":28,"end_line":4,"end_character":47},"in_reply_to":"c74f852f_47747c19","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    aging mechanism for those MACs until OVN 23.06, where the configuration"},{"line_number":7,"context_line":"    option \"fdb_age_threshold\" was added. This enables to set the maximum time"},{"line_number":8,"context_line":"    the learned MACs will stay in the FDB table (in seconds). When the"},{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"f7ab59a0_0d62bade","line":9,"range":{"start_line":9,"start_character":57,"end_line":9,"end_character":74},"updated":"2023-10-18 20:39:17.000000000","message":"is there any guidance we could give to users here as to how to pick up the \"proper\" value?","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    aging mechanism for those MACs until OVN 23.06, where the configuration"},{"line_number":7,"context_line":"    option \"fdb_age_threshold\" was added. This enables to set the maximum time"},{"line_number":8,"context_line":"    the learned MACs will stay in the FDB table (in seconds). When the"},{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"79456bf7_e4ea91ea","line":9,"range":{"start_line":9,"start_character":57,"end_line":9,"end_character":74},"in_reply_to":"f7ab59a0_0d62bade","updated":"2023-10-19 06:42:11.000000000","message":"I don\u0027t have a rule of thumb for this. I would say it is a tradeoff depending on the number of FDB entries that are generated over time and the impact of having/deleting them","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    the learned MACs will stay in the FDB table (in seconds). When the"},{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""},{"line_number":13,"context_line":"    was also added to avoid removing a large number of entries at once."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"dc7878b1_3e17f8ee","line":11,"range":{"start_line":11,"start_character":48,"end_line":11,"end_character":57},"updated":"2023-10-18 20:39:17.000000000","message":"especially","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    the learned MACs will stay in the FDB table (in seconds). When the"},{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""},{"line_number":13,"context_line":"    was also added to avoid removing a large number of entries at once."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"0bbfff48_d90fd30f","line":11,"range":{"start_line":11,"start_character":48,"end_line":11,"end_character":57},"in_reply_to":"dc7878b1_3e17f8ee","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"31444188fe12513d59ab10023127ce0c7060f7ae","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""},{"line_number":13,"context_line":"    was also added to avoid removing a large number of entries at once."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3dfb7086_1402692b","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":20},"updated":"2023-10-18 20:39:17.000000000","message":"I think large is a more common word when describing networks.","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"df819c7ed4ca6ef9dbbd4a88f81a2950e690eda4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    \"localnet_learn_fdb\" configuration option is enabled, the proper value for"},{"line_number":10,"context_line":"    \"fdb_age_threshold\" should also be set, to avoid performance/scalability"},{"line_number":11,"context_line":"    issues due to the table growing too much -- specially when provider"},{"line_number":12,"context_line":"    networks are big. In addition the configuration option \"fdb_removal_limit\""},{"line_number":13,"context_line":"    was also added to avoid removing a large number of entries at once."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"bbee5dac_378f51cf","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":20},"in_reply_to":"3dfb7086_1402692b","updated":"2023-10-19 06:42:11.000000000","message":"Done","commit_id":"7698d0e46dcabda27d2e1df979d4a2501ed45f39"}]}
