
Am 27-02-2014 13:09, schrieb Shu Ming:
How about the result when two request come into Kimchi at the same time to update the users and groups to the same VM? Yes, there is a race condition here. If multiple users update that information at the same time, one update may overwrite the other one.
Race conditions are all around the Kimchi code: if one user creates a VM using some template and, at the same time, another user removes that template, the VM may be created with an invalid template. That is just one of the several scenarios in which we may hit a race condition today. But we do not have an easy solution for this right now. In order to make sure our code is safe from race conditions, we need to use synchronization features like locks and mutexes. It will take a lot of effort for that to be implemented and tested across the multiple Kimchi layers. We also need to make sure that libvirt has some locking commands in its API, otherwise, even if we get this right in Kimchi, users from other VM managers can invalidate our operations. It would be useless to secure our own code from parallel access if someone is able to edit the VM XML using, let's say, virsh. So in summary, I am aware of this problem (well, I wasn't before you brought it up here :) ) but I cannot fix it right away. We need to have a long discussion on how we will tackle race conditions in Kimchi and then we can fix this. In the meantime, we can only hope that simultaneous access for the same operations do not happen.