)]}'
{"id":"openstack%2Foslo.db~926649","triplet_id":"openstack%2Foslo.db~master~I7adc29d6a4f86af9fc447f35334bdf61507b8f86","project":"openstack/oslo.db","branch":"master","topic":"remove_max_retries_from_enginefacade","attention_set":{"11816":{"account":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"last_update":"2025-11-18 15:56:32.000000000","reason":"\u003cGERRIT_ACCOUNT_15334\u003e replied on the change","reason_account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}}},"removed_from_attention_set":{"15334":{"account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"last_update":"2025-11-25 11:49:49.000000000","reason":"\u003cGERRIT_ACCOUNT_15334\u003e replied on the change","reason_account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"}},"9816":{"account":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"last_update":"2025-11-18 16:00:26.000000000","reason":"\u003cGERRIT_ACCOUNT_9816\u003e replied on the change","reason_account":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"}},"16137":{"account":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"last_update":"2024-08-20 14:42:03.000000000","reason":"\u003cGERRIT_ACCOUNT_16137\u003e replied on the change","reason_account":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"}}},"hashtags":[],"change_id":"I7adc29d6a4f86af9fc447f35334bdf61507b8f86","subject":"disable / deprecate max_retries for modern enginefacade","status":"NEW","created":"2024-08-20 14:16:49.000000000","updated":"2025-11-25 11:49:49.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":14,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"2ccbdeec04ca103562f546a1054b99b7b65eaf2c","_number":926649,"virtual_id_number":926649,"owner":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"tag":"autogenerated:zuul:check","value":1,"date":"2025-11-20 14:42:26.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"all":[{"value":0,"date":"2025-11-25 11:49:49.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":-1,"date":"2025-11-24 17:19:02.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2024-08-20 14:19:41.000000000","updated_by":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"reviewer":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"state":"REVIEWER"},{"updated":"2024-08-20 14:19:41.000000000","updated_by":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"reviewer":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"state":"REVIEWER"},{"updated":"2024-08-20 14:19:41.000000000","updated_by":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"reviewer":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"state":"REVIEWER"},{"updated":"2024-08-20 16:09:21.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"d63545b08dfeaf5192be97b052c4d8085101be0d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2024-08-20 14:16:49.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"eebbcc5f13685a05867fa186d3f2d78fadbf00e3","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2024-08-20 14:26:52.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"d5ffa7fa2b724dc524d995ddec81ba064c5eb3b8","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2024-08-20 14:30:28.000000000","message":"Patch Set 1:\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"b52250a9b4d18e15d9b70d77dddd970145573980","author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"date":"2024-08-20 14:42:03.000000000","message":"Patch Set 1:\n\n(3 comments)","accounts_in_message":[],"_revision_number":1},{"id":"aeb18f111f5496eba65e46eebad2395ee4f24b4a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-08-20 16:09:21.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/27a95a4f76b8425984e1850295e1bab9\n\n- oslodb-tox-py38-tips https://zuul.opendev.org/t/openstack/build/76a67688efe04e739fe8d3f48a1890e4 : SUCCESS in 6m 18s\n- oslodb-tox-py310-tips https://zuul.opendev.org/t/openstack/build/3650cbcce4a544bc91dce19abbc81d46 : SUCCESS in 5m 23s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/04f5a35ba750446abf37c759d971f155 : SUCCESS in 1h 41m 08s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c44e0f64748940e1a9b1ab92ea59b910 : SUCCESS in 4m 13s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/bbf3c16461d947919c15e21fd68c187c : SUCCESS in 4m 36s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/171cebfd5c6e4ad1a43de546cf529306 : SUCCESS in 4m 20s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/3785adde654c45078afe6fca70babe06 : SUCCESS in 5m 32s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e660c26f37de46a4871d8922f4793e73 : SUCCESS in 4m 01s","accounts_in_message":[],"_revision_number":1},{"id":"7cabc1e58b931816f52a0a7206838a3d2adc80ab","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2024-09-24 14:00:02.000000000","message":"Patch Set 1: Code-Review-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"37ad87ee40349ec4ebc9d1361c48246092174575","author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"date":"2024-09-24 14:07:06.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ad073583e9bde8a621e1755b609fb66fbb6ec30f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-09-15 15:12:13.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"02eb9fc42a4a960af35b199a1414168c49a90a69","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-15 16:52:41.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d64c294276b044afba026b5e3eb5c3c7\n\n- oslodb-tox-py310-tips https://zuul.opendev.org/t/openstack/build/a42069f955b346f78739998cd6b034c1 : SUCCESS in 5m 56s\n- oslodb-tox-py313-tips https://zuul.opendev.org/t/openstack/build/1085f6a34d9648aba65cbc98e1f06c3e : SUCCESS in 10m 00s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/a5d5c0b8c3c341eda8b76a1b3b9b3d8b : SUCCESS in 1h 37m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/88907126397543e58e4ab91a1a875763 : SUCCESS in 3m 51s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/c141d6c3f06c42cdabef47aa74e816b3 : SUCCESS in 4m 00s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/d254efb5b2e042299bce08b2666e14b9 : SUCCESS in 4m 45s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/184a198bd0114b1c88e3bc93b2491097 : SUCCESS in 7m 09s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0c93e16b51884def8389e49ebc4878f0 : SUCCESS in 4m 38s","accounts_in_message":[],"_revision_number":2},{"id":"c29f96f87fdcf1e48845a8d3d5609c3261884f5c","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-11-18 15:56:32.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"47d91baaa5bd7419a65d576a0addf00e8aea0af4","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2025-11-18 16:00:26.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"46668cccb9a19bd952d1f1f6068e53c7d320f460","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2025-11-18 16:07:09.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"67117f68c4c336384fc01e1484ec08a41fb65933","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-11-20 12:50:47.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.\n\nCopied Votes:\n* Code-Review+2 (copy condition: \"**changekind:TRIVIAL_REBASE** OR is:MIN\")\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"420e6228cd6d046e60abef3159511ff91865041d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-20 14:42:26.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6c9ebeeb732a4ee09df1772c6c7c8063\n\n- oslodb-tox-py310-tips https://zuul.opendev.org/t/openstack/build/23bd413027d447ef87538291b2d03ee4 : SUCCESS in 5m 43s\n- oslodb-tox-py313-tips https://zuul.opendev.org/t/openstack/build/1c0c05f9449348b490e5ae2c6911d650 : SUCCESS in 8m 32s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/0da2cfe7733047dcb7954cd40b07ac6a : SUCCESS in 1h 50m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9dac147207a14d278c827cde5242b1ba : SUCCESS in 4m 07s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/d23b146052784a4f810f422f4ea94491 : SUCCESS in 2m 29s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/1622ba5d6cd84bb6a04fd4caf35f19f0 : SUCCESS in 6m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/61fca4faab3a4ab297b85ba56bb4a61b : SUCCESS in 3m 46s","accounts_in_message":[],"_revision_number":3},{"id":"901e2f2eb28292582382c387d040858c0d96c36a","author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"date":"2025-11-24 17:19:02.000000000","message":"Patch Set 3: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"2ccbdeec04ca103562f546a1054b99b7b65eaf2c","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2025-11-25 11:49:49.000000000","message":"Patch Set 3: -Code-Review","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"cb4e9d14ab51c857c0f4d552408be562e05ff3ab","revisions":{"40c5375332e37a458e4a70ffe627c832a5143466":{"kind":"REWORK","_number":1,"created":"2024-08-20 14:16:49.000000000","uploader":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"ref":"refs/changes/49/926649/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.db","ref":"refs/changes/49/926649/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/1"}}},"commit":{"parents":[{"commit":"a59dba4479f9f391b63901b847d25a77093a460a","subject":"Merge \"Remove [database] use_tpool and TpoolDbapiWrapper\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/a59dba4479f9f391b63901b847d25a77093a460a"}]}],"author":{"name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","date":"2024-08-20 14:04:13.000000000","tz":-240},"committer":{"name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","date":"2024-08-20 14:04:13.000000000","tz":-240},"subject":"disable / deprecate max_retries for modern enginefacade","message":"disable / deprecate max_retries for modern enginefacade\n\nThe max_retries feature is an old leftover from the very early\noslo.db days.  It essentially forces the create_engine() call to make\na new database connection immediately, adding in some \"retry\" logic\nwhere it will make a few attempts to create this first connection\nwith logging and an informative message if all attempts time out.\nIt assumes an application that has organized itself such that\nthe create_engine() call is invoked at a specific time within the\nprogram flow, where it is assumed that the application was newly\nstarted and that this would be the most\nappropriate place to see if the database is up.\n\nThis behavior is not useful in modern use for several reasons.\nFirst and foremost, openstack applications no longer call oslo_db.sqlalchemy.create_engine\ndirectly in any case; they now use enginefacade, which itself does not\ncall create_engine until the facade is \"started\", which itself is\nsomething that only occurs when the facade is first used; that is, a\nmethod which requires a database connection is called upon.  So the\neffect of this is that there is no \"the application just started, lets\ntry a database connection but not actually use it\" behavior in any case,\nand the assumption made by max_retries that create_engine is called\nimmediately upon application start is no longer true.\n\nAn additional reason max_retries is not necessary is that Openstack\napplications necessarily need to have their own \"retry\" behavior\nnot just at application startup / create_engine time, but *any* time\nthat the database might have gone down.   This is achieved using the\napi.wrap_db_retry decorator, which is where openstack\u0027s general\nfeature of gracefully reconnecting when a database has been down\nfor some period of time is implemented; there is nothing special\nabout the initial \"create_engine\" version of this and the max_retry\nbehavior within is essentially redundant.\n\nSQLAlchemy itself also includes internal retry behaviors within\nthe connection pool, using three attempts to create new connections\nas well as offering the \"pool pre ping\" feature that ensures connections\nare live before using them.\n\nBy ensuring that enginefacade\u0027s behavior is fully lazy-initializing\nas was originally intended for this module, we repair issues such as\nopenstack applications that use reader/writer DB connections only\nmaking use of the type of connection requested, such as being\nable to use \"reader\" without forcing \"writer\" to connect.\nSee  I81f00368956b9a3c486fb48e9272a4394fda872c\n\nChange-Id: I7adc29d6a4f86af9fc447f35334bdf61507b8f86\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/40c5375332e37a458e4a70ffe627c832a5143466"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/40c5375332e37a458e4a70ffe627c832a5143466"}]},"branch":"refs/heads/master"},"8c343e58ee88acf56dddc7598d3bab0a2ddede14":{"kind":"REWORK","_number":2,"created":"2025-09-15 15:12:13.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/49/926649/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.db","ref":"refs/changes/49/926649/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/2"}}},"commit":{"parents":[{"commit":"13975afcb54009984319ad11eea719f6d77e1d29","subject":"Merge \"Remove LegacyEngineFacade\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/13975afcb54009984319ad11eea719f6d77e1d29"}]}],"author":{"name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","date":"2024-08-20 14:04:13.000000000","tz":-240},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-09-15 15:11:56.000000000","tz":60},"subject":"disable / deprecate max_retries for modern enginefacade","message":"disable / deprecate max_retries for modern enginefacade\n\nThe max_retries feature is an old leftover from the very early\noslo.db days.  It essentially forces the create_engine() call to make\na new database connection immediately, adding in some \"retry\" logic\nwhere it will make a few attempts to create this first connection\nwith logging and an informative message if all attempts time out.\nIt assumes an application that has organized itself such that\nthe create_engine() call is invoked at a specific time within the\nprogram flow, where it is assumed that the application was newly\nstarted and that this would be the most\nappropriate place to see if the database is up.\n\nThis behavior is not useful in modern use for several reasons.\nFirst and foremost, openstack applications no longer call oslo_db.sqlalchemy.create_engine\ndirectly in any case; they now use enginefacade, which itself does not\ncall create_engine until the facade is \"started\", which itself is\nsomething that only occurs when the facade is first used; that is, a\nmethod which requires a database connection is called upon.  So the\neffect of this is that there is no \"the application just started, lets\ntry a database connection but not actually use it\" behavior in any case,\nand the assumption made by max_retries that create_engine is called\nimmediately upon application start is no longer true.\n\nAn additional reason max_retries is not necessary is that Openstack\napplications necessarily need to have their own \"retry\" behavior\nnot just at application startup / create_engine time, but *any* time\nthat the database might have gone down.   This is achieved using the\napi.wrap_db_retry decorator, which is where openstack\u0027s general\nfeature of gracefully reconnecting when a database has been down\nfor some period of time is implemented; there is nothing special\nabout the initial \"create_engine\" version of this and the max_retry\nbehavior within is essentially redundant.\n\nSQLAlchemy itself also includes internal retry behaviors within\nthe connection pool, using three attempts to create new connections\nas well as offering the \"pool pre ping\" feature that ensures connections\nare live before using them.\n\nBy ensuring that enginefacade\u0027s behavior is fully lazy-initializing\nas was originally intended for this module, we repair issues such as\nopenstack applications that use reader/writer DB connections only\nmaking use of the type of connection requested, such as being\nable to use \"reader\" without forcing \"writer\" to connect.\nSee  I81f00368956b9a3c486fb48e9272a4394fda872c\n\nChange-Id: I7adc29d6a4f86af9fc447f35334bdf61507b8f86\nSigned-off-by: Mike Bayer \u003cmike_mp@zzzcomputing.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/8c343e58ee88acf56dddc7598d3bab0a2ddede14"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/8c343e58ee88acf56dddc7598d3bab0a2ddede14"}]},"branch":"refs/heads/master"},"cb4e9d14ab51c857c0f4d552408be562e05ff3ab":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2025-11-20 12:50:47.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/49/926649/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.db","ref":"refs/changes/49/926649/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.db refs/changes/49/926649/3"}}},"commit":{"parents":[{"commit":"5797bbddcd66ed319e0a8a5f5962eeed4e14e2ba","subject":"reno: Update master for unmaintained/2024.1","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/5797bbddcd66ed319e0a8a5f5962eeed4e14e2ba"}]}],"author":{"name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","date":"2024-08-20 14:04:13.000000000","tz":-240},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2025-11-20 11:16:05.000000000","tz":0},"subject":"disable / deprecate max_retries for modern enginefacade","message":"disable / deprecate max_retries for modern enginefacade\n\nThe max_retries feature is an old leftover from the very early\noslo.db days.  It essentially forces the create_engine() call to make\na new database connection immediately, adding in some \"retry\" logic\nwhere it will make a few attempts to create this first connection\nwith logging and an informative message if all attempts time out.\nIt assumes an application that has organized itself such that\nthe create_engine() call is invoked at a specific time within the\nprogram flow, where it is assumed that the application was newly\nstarted and that this would be the most\nappropriate place to see if the database is up.\n\nThis behavior is not useful in modern use for several reasons.\nFirst and foremost, openstack applications no longer call oslo_db.sqlalchemy.create_engine\ndirectly in any case; they now use enginefacade, which itself does not\ncall create_engine until the facade is \"started\", which itself is\nsomething that only occurs when the facade is first used; that is, a\nmethod which requires a database connection is called upon.  So the\neffect of this is that there is no \"the application just started, lets\ntry a database connection but not actually use it\" behavior in any case,\nand the assumption made by max_retries that create_engine is called\nimmediately upon application start is no longer true.\n\nAn additional reason max_retries is not necessary is that Openstack\napplications necessarily need to have their own \"retry\" behavior\nnot just at application startup / create_engine time, but *any* time\nthat the database might have gone down.   This is achieved using the\napi.wrap_db_retry decorator, which is where openstack\u0027s general\nfeature of gracefully reconnecting when a database has been down\nfor some period of time is implemented; there is nothing special\nabout the initial \"create_engine\" version of this and the max_retry\nbehavior within is essentially redundant.\n\nSQLAlchemy itself also includes internal retry behaviors within\nthe connection pool, using three attempts to create new connections\nas well as offering the \"pool pre ping\" feature that ensures connections\nare live before using them.\n\nBy ensuring that enginefacade\u0027s behavior is fully lazy-initializing\nas was originally intended for this module, we repair issues such as\nopenstack applications that use reader/writer DB connections only\nmaking use of the type of connection requested, such as being\nable to use \"reader\" without forcing \"writer\" to connect.\nSee  I81f00368956b9a3c486fb48e9272a4394fda872c\n\nChange-Id: I7adc29d6a4f86af9fc447f35334bdf61507b8f86\nSigned-off-by: Mike Bayer \u003cmike_mp@zzzcomputing.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/cb4e9d14ab51c857c0f4d552408be562e05ff3ab"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.db/commit/cb4e9d14ab51c857c0f4d552408be562e05ff3ab"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"}},{"label":"Workflow","status":"MAY"},{"label":"Backport-Candidate","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
