DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.

DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
With the current code for snapshots, cloudStack always creates snapshot on the host where vm is Running (for vms in Running state) or on the host where vm used to run the last time (for vms in Stopped state). As the commands are not synchronized on the agent side, the case when multiple commands are send to the backend at the same time can lead to the performance issues on the hypervisor side. At the end there is a high possibility that createSnapshot command might time out on the Xen side_._
The solution is to synchronize number of concurrent snapshots per host basis. The threshold should be configurable as the customer usually knows how many snapshots at a time the backend can handle. While the concurrent snapshots are being processed by the backend, all subsequent snapshot commands scheduled for execution on the same host, should wait in the queue. And the wait timeout should also be a configurable value.
Admin knows that his backend host can process 10 snapshots at a time with the current vms load. So he sets the global configuration concurrent.snapshots.threshold.perhost to 10 and configures the desired expiration time for the create snapshot job to wait for execution.
sync_queue table
...
Once the createSnapshot operation is requested either by the user via API, or by cloudStack snapshot scheduler, the code:
...
4) If the createSnapshot job waits for more than job.expire.minutes for execution, then it gets expired and failure is returned to the API caller.
No new APIs are added. Existing createSnapshot API now going to be synchronized on the Host object, but no new parameters are exposed to the end user.
No UI changes for the feature.