summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/common/test_kickstart_utils.py
diff options
context:
space:
mode:
authorJulia Kreger <juliaashleykreger@gmail.com>2023-04-27 16:18:14 -0700
committerJulia Kreger <juliaashleykreger@gmail.com>2023-05-01 15:35:33 -0700
commit75b881bd31952b8f858b4708fb83f7d2ca7c42cc (patch)
treecac2546a65a6b901bd0e283df5b735918b9a1d2d /ironic/tests/unit/common/test_kickstart_utils.py
parent5e6fa6ef3060af766231bafbd756401d4af9ee84 (diff)
downloadironic-75b881bd31952b8f858b4708fb83f7d2ca7c42cc.tar.gz
Fix DB/Lock session handling issues
Prior to this fix, we have been unable to run the Metal3 CI job with SQLAlchemy's internal autocommit setting enabled. However that setting is deprecated and needs to be removed. Investigating our DB queries and request patterns, we were able to identify some queries which generally resulted in the underlying task and lock being held longer because the output was not actually returned, which is something we've generally had to fix in some places previously. Doing some of these changes did drastically reduce the number of errors encountered with the Metal3 CI job, however it did not eliminate them entirely. Further investigation, we were able to determine that the underlying issue we were encountering was when we had an external semi-random reader, such as Metal3 polling endpoints, we could reach a situation where we would be blocked from updating the database as to open a write lock, we need the active readers not to be interacting with the database, and with a random reader of sorts, the only realistic option we have is to enable the Write Ahead Log[0]. We didn't have to do this with SQLAlchemy previously because autocommit behavior hid the complexities from us, but in order to move to SQLAlchemy 2.0, we do need to remove autocommit. Additionally, adds two unit tests for get_node_with_token rpc method, which apparently we missed or lost somewhere along the way. Also, adds notes to two Database interactions to suggest we look at them in the future as they may not be the most efficient path forward. [0]: https://www.sqlite.org/wal.html Change-Id: Iebcc15fe202910b942b58fc004d077740ec61912
Diffstat (limited to 'ironic/tests/unit/common/test_kickstart_utils.py')
0 files changed, 0 insertions, 0 deletions