« Previous | Next » 

Revision 952b2a48


Added by Christos Stavrakakis almost 11 years ago

cyclades: Wrap diagnostic creation in transaction

Fix bug in snf-dispatcher causing wrong updates of VMs from ganeti.
Creation if instance diagnostics must run inside a transaction, because
otherwise, the lock of the vm (select_for_update) is released too early.
Specifally, 'if_update_required' takes a lock on the VM and checks if
the timestamp of the message is newer than the one in the VM. If
diagnostic creation ('create_instance_diagnostic' function) does not run
inside a transaction, the lock is released when the diagnostic row is
inserted in the DB. However, after storing the diagnostic, the VM is
saved in order to update the 'updated' timestamp (otherwise,
MODIFIED_SINCE does not work correctly). In the meantime, another
message may update the VM, and this update will be lost. This commit
wrap 'create_instance_diagnostic' inside transaction to fix this issue.


  • added
  • modified
  • copied
  • renamed
  • deleted

View differences