Hello,

SQLAlchemy 1.4 requested some adaptations in various places (oslo.db, nova, cinder etc).

Without digging into your issue, oslo.db 8.6.0 at least is required to support this version of SQLAlchemy [1].

Also you should notice that various patches are required on Nova and other services too [2][3][4][5]. I think that the services deliverables (nova, cinder, etc) should be released to propagate their fixes more widely and surely fix your context.

For further reading please have a look to [6].

[1] https://review.opendev.org/c/openstack/releases/+/788488
[2] https://review.opendev.org/c/openstack/nova/+/788471
[3] https://review.opendev.org/c/openstack/placement/+/789921
[4] https://review.opendev.org/c/openstack/masakari/+/790216
[5] https://review.opendev.org/c/openstack/cinder/+/790797
[6] https://review.opendev.org/c/openstack/requirements/+/788339

Le mar. 18 mai 2021 à 13:57, tjoen <tjoen@dds.nl> a écrit :
Python-3.9.4
nova-23.0.1
oslo.db-8.5.0
SQLAlchemy-1.4.15

docs.openstack.org/install-guide/launch-instance-provider.html
$ openstack server list
Status is SHUTDOWN
$ openstack server start provider-instance
results in
site-packages/oslo_db/sqlalchemy/update_match.py", line 489, in
   _update_context.statement.froms[0]
ERROR nova.api.openstack.wsgi AttributeError: 'QueryContext' object
          has no attribute 'statement'

site-packages/oslo_db/sqlalchemy/update_match.py  line 488 and 489:
     context = query._compile_context()
     primary_table = context.statement.froms[0]

site-packages/sqlalchemy/orm/query.py
     def _compile_context(self, for_statement=False):
         compile_state = self._compile_state(for_statement=for_statement)
         context = QueryContext(
         context = QueryContext(
             compile_state,
             compile_state.statement,
             self._params,
             self.session,
             self.load_options,
         )
         return context

nova, oslo.db or SQLAlchemy bug?



--
Hervé Beraud
Senior Software Engineer at Red Hat
irc: hberaud
-----BEGIN PGP SIGNATURE-----

wsFcBAABCAAQBQJb4AwCCRAHwXRBNkGNegAALSkQAHrotwCiL3VMwDR0vcja10Q+
Kf31yCutl5bAlS7tOKpPQ9XN4oC0ZSThyNNFVrg8ail0SczHXsC4rOrsPblgGRN+
RQLoCm2eO1AkB0ubCYLaq0XqSaO+Uk81QxAPkyPCEGT6SRxXr2lhADK0T86kBnMP
F8RvGolu3EFjlqCVgeOZaR51PqwUlEhZXZuuNKrWZXg/oRiY4811GmnvzmUhgK5G
5+f8mUg74hfjDbR2VhjTeaLKp0PhskjOIKY3vqHXofLuaqFDD+WrAy/NgDGvN22g
glGfj472T3xyHnUzM8ILgAGSghfzZF5Skj2qEeci9cB6K3Hm3osj+PbvfsXE/7Kw
m/xtm+FjnaywZEv54uCmVIzQsRIm1qJscu20Qw6Q0UiPpDFqD7O6tWSRKdX11UTZ
hwVQTMh9AKQDBEh2W9nnFi9kzSSNu4OQ1dRMcYHWfd9BEkccezxHwUM4Xyov5Fe0
qnbfzTB1tYkjU78loMWFaLa00ftSxP/DtQ//iYVyfVNfcCwfDszXLOqlkvGmY1/Y
F1ON0ONekDZkGJsDoS6QdiUSn8RZ2mHArGEWMV00EV5DCIbCXRvywXV43ckx8Z+3
B8qUJhBqJ8RS2F+vTs3DTaXqcktgJ4UkhYC2c1gImcPRyGrK9VY0sCT+1iA+wp/O
v6rDpkeNksZ9fFSyoY2o
=ECSj
-----END PGP SIGNATURE-----