Merge "Generate version_id upon add_node"

This commit is contained in:
Zuul 2017-10-24 10:46:58 +00:00 committed by Gerrit Code Review
commit 72361d386a
2 changed files with 12 additions and 1 deletions

View File

@ -686,9 +686,12 @@ def add_node(uuid, state, **attributes):
started_at = timeutils.utcnow()
with db.ensure_transaction() as session:
_delete_node(uuid)
db.Node(uuid=uuid, state=state, started_at=started_at).save(session)
version_id = uuidutils.generate_uuid()
db.Node(uuid=uuid, state=state, version_id=version_id,
started_at=started_at).save(session)
node_info = NodeInfo(uuid=uuid, state=state, started_at=started_at,
version_id=version_id,
ironic=attributes.pop('ironic', None))
for (name, value) in attributes.items():
if not value:

View File

@ -0,0 +1,8 @@
---
fixes:
- |
A ``version_id`` is now explicitly generated during the
``node_cache.start_introspection/.add_node`` call to avoid race conditions
such as in case of the `two concurrent introspection calls bug`_.
.. _two concurrent introspection calls bug: https://bugs.launchpad.net/ironic-inspector/+bug/1719627