)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5680c684842afb33ad8e72d8b308b0e06a07c20c","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"in [1] a lock was introduced with the goal of preventing subnets from"},{"line_number":10,"context_line":"being deleted while ports are being created in them in parallel."},{"line_number":11,"context_line":"This was acheived by aquiring an exclusive lock on the row of the subnet in"},{"line_number":12,"context_line":"the Subnet table when adding/modifying a port or deleting the subnet."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"However as this was a exclusive lock it also prevented concurrent port"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"d0e9dbc8_e357adf0","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":75},"updated":"2023-03-07 11:58:23.000000000","message":"nit: please limit chars to 72\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"in [1] a lock was introduced with the goal of preventing subnets from"},{"line_number":10,"context_line":"being deleted while ports are being created in them in parallel."},{"line_number":11,"context_line":"This was acheived by aquiring an exclusive lock on the row of the subnet in"},{"line_number":12,"context_line":"the Subnet table when adding/modifying a port or deleting the subnet."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"However as this was a exclusive lock it also prevented concurrent port"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"19c850ce_c7063cb0","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":75},"in_reply_to":"d0e9dbc8_e357adf0","updated":"2023-03-08 12:58:28.000000000","message":"fixed","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5680c684842afb33ad8e72d8b308b0e06a07c20c","unresolved":true,"context_lines":[{"line_number":27,"context_line":"  currently on the row."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"With this we maintain the same locking level as before, but reduce the"},{"line_number":30,"context_line":"amount of lock contention happening and thereby improove throughput."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"[1]: https://review.opendev.org/c/openstack/neutron/+/713045"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4b772394_3a70bb1e","line":30,"range":{"start_line":30,"start_character":48,"end_line":30,"end_character":56},"updated":"2023-03-07 11:58:23.000000000","message":"improve","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":true,"context_lines":[{"line_number":27,"context_line":"  currently on the row."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"With this we maintain the same locking level as before, but reduce the"},{"line_number":30,"context_line":"amount of lock contention happening and thereby improove throughput."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"[1]: https://review.opendev.org/c/openstack/neutron/+/713045"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"e1ab39db_23b65e39","line":30,"range":{"start_line":30,"start_character":48,"end_line":30,"end_character":56},"in_reply_to":"4b772394_3a70bb1e","updated":"2023-03-08 12:58:28.000000000","message":"fixed","commit_id":"1015d178a834082ba3d56c505034a330508f2004"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"bd66521e059edd693f0bda58f5288c9894bc219e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ca1b0406_a52d4fa8","updated":"2023-03-01 15:34:28.000000000","message":"still working on this and testing it.\nAlso a bug for that is still missing","commit_id":"c5808d53ec00fdc14ce7003ff27941589a216b57"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"6cd013bd2e021b5de8038d4d3329930c753e4216","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"55cfbde5_70c2ba06","updated":"2023-03-02 16:18:51.000000000","message":"Change was now tested and improved the port create performance fro 250 ports from 140 seconds to 45 seconds while now getting a reliability of 100%","commit_id":"023468e7701d3133c7473058dcd0183abf9ee433"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5680c684842afb33ad8e72d8b308b0e06a07c20c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4dfcb7f2_00cd4bfe","updated":"2023-03-07 11:58:23.000000000","message":"Do you have some figures supporting this change? Can you provide a way to test this improvement?","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a9e06535_404ed4de","in_reply_to":"4dfcb7f2_00cd4bfe","updated":"2023-03-08 12:58:28.000000000","message":"I added some in the commit message.\nHowever i\u0027m currently seeing a performance reduction for port deletions.\nIt looks that for now we are gaining ~10% on port creates and loosing these 10% again on port deletions.\n\nI\u0027m still investigating why","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a351e281654d811f0f4ce0789de2bb49b63dcdb3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"248cdd12_b281551d","updated":"2023-03-09 08:04:58.000000000","message":"1) Please use bobcat (directory named \"2023.2\") version. Push the patch on top of https://review.opendev.org/c/openstack/neutron/+/876051/\n2) We no longer user contract migrations. Use expand.\n3) Yes, this is a contraction of the database and that will fail if executed in the expand branch. This is why we use this: https://review.opendev.org/c/openstack/neutron/+/824009/4/neutron/db/migration/alembic_migrations/versions/yoga/expand/8160f7a9cebb_drop_portbindingports_table.py","commit_id":"664da28e82944410c3bcffa388510e93039d2022"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"089a09ab_2b2d4b45","updated":"2023-03-08 12:58:28.000000000","message":"Setting this to WIP for now, as i see performance degrations for port deletions","commit_id":"664da28e82944410c3bcffa388510e93039d2022"},{"author":{"_account_id":35969,"name":"Tobias Fischer","display_name":"Tobias","email":"tobias.fischer@cloudandheat.com","username":"tobfisch"},"change_message_id":"6dc70d80636ee363a7160b52f2104ce63b1ab963","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"71ab8345_c7922460","updated":"2023-05-04 09:49:58.000000000","message":"The link to the patch replacement:  https://review.opendev.org/c/openstack/neutron/+/881943","commit_id":"664da28e82944410c3bcffa388510e93039d2022"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"7a768e2476fce7871cd7bdd7060530f2d79de3ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0dba46d7_560ea790","updated":"2023-03-09 08:27:20.000000000","message":"thanks for the feedback. I\u0027ll continue working on that in the next weeks","commit_id":"664da28e82944410c3bcffa388510e93039d2022"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f8b445c9c4aaa92ff0590759d89b87dd371e922b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"13b5a351_4cdc4056","in_reply_to":"248cdd12_b281551d","updated":"2023-03-09 08:06:54.000000000","message":"Another example: https://review.opendev.org/c/openstack/neutron/+/798961/35/neutron/db/migration/alembic_migrations/versions/zed/expand/I43e0b669096_port_forwarding_port_ranges.py","commit_id":"664da28e82944410c3bcffa388510e93039d2022"}],"neutron/db/models_v2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5680c684842afb33ad8e72d8b308b0e06a07c20c","unresolved":true,"context_lines":[{"line_number":33,"context_line":"class HasInUse(object):"},{"line_number":34,"context_line":"    \"\"\"NeutronBaseV2 mixin, to add the flag \"in_use\" to a DB model."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    The content of this flag (boolean) parameter is not relevant and it is"},{"line_number":37,"context_line":"    actually no longer used. The goal of this class is to allow users lock"},{"line_number":38,"context_line":"    lock specific database rows with a shared or exclusive lock (without"},{"line_number":39,"context_line":"    necessarily introducing a change in the table itself). Having these locks"},{"line_number":40,"context_line":"    allows the DB engine to prevent concurrent modifications (e.g. the deletion"}],"source_content_type":"text/x-python","patch_set":6,"id":"d240b681_ef808184","line":37,"range":{"start_line":36,"start_character":3,"end_line":37,"end_character":27},"updated":"2023-03-07 11:58:23.000000000","message":"If we are no longer using a field, then we should remove it. Please propose a DB migration deleting this field.","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":true,"context_lines":[{"line_number":33,"context_line":"class HasInUse(object):"},{"line_number":34,"context_line":"    \"\"\"NeutronBaseV2 mixin, to add the flag \"in_use\" to a DB model."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    The content of this flag (boolean) parameter is not relevant and it is"},{"line_number":37,"context_line":"    actually no longer used. The goal of this class is to allow users lock"},{"line_number":38,"context_line":"    lock specific database rows with a shared or exclusive lock (without"},{"line_number":39,"context_line":"    necessarily introducing a change in the table itself). Having these locks"},{"line_number":40,"context_line":"    allows the DB engine to prevent concurrent modifications (e.g. the deletion"}],"source_content_type":"text/x-python","patch_set":6,"id":"3098d11f_d6c896bd","line":37,"range":{"start_line":36,"start_character":3,"end_line":37,"end_character":27},"in_reply_to":"d240b681_ef808184","updated":"2023-03-08 12:58:28.000000000","message":"ok, done","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5f5aedadadc83a49e6052caa0d549e3c95695fe3","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    resource)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    \"read_lock_register\" takes a shared DB lock on the row specified by the"},{"line_number":45,"context_line":"    filters. The lock is automatically released on transaction commit."},{"line_number":46,"context_line":"    You can have any number of parallel read locks on the same DB row. But"},{"line_number":47,"context_line":"    you can not have any write lock in parallel."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9dffba7a_ecb4c3bc","line":45,"range":{"start_line":45,"start_character":63,"end_line":45,"end_character":69},"updated":"2023-03-07 05:18:40.000000000","message":"There is no commit in the read case, maybe just use the previous text - \"once the transaction ends\" ?","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5680c684842afb33ad8e72d8b308b0e06a07c20c","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def write_lock_register(cls, context, exception, **filters):"},{"line_number":59,"context_line":"        num_reg \u003d context.session.query("},{"line_number":60,"context_line":"            cls).enable_eagerloads(False).with_for_update().get(filters)"},{"line_number":61,"context_line":"        if num_reg is None:"},{"line_number":62,"context_line":"            raise exception"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"97ab1ce7_3b658db8","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":34},"updated":"2023-03-07 11:58:23.000000000","message":"Please add a short comment describing why are you adding this clause. You can refer to the sqlalchemy docs.\n\nhttps://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.with_for_update","commit_id":"1015d178a834082ba3d56c505034a330508f2004"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"27f8da0263aad27319149c9e3dc391be38d03866","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def write_lock_register(cls, context, exception, **filters):"},{"line_number":59,"context_line":"        num_reg \u003d context.session.query("},{"line_number":60,"context_line":"            cls).enable_eagerloads(False).with_for_update().get(filters)"},{"line_number":61,"context_line":"        if num_reg is None:"},{"line_number":62,"context_line":"            raise exception"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"57a3e334_75b49330","line":60,"range":{"start_line":60,"start_character":17,"end_line":60,"end_character":34},"in_reply_to":"97ab1ce7_3b658db8","updated":"2023-03-08 12:58:28.000000000","message":"ok, done","commit_id":"1015d178a834082ba3d56c505034a330508f2004"}]}
