-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/28511/
-----------------------------------------------------------
Review request for cloudstack.
Bugs: CLOUDSTACK-7412
https://issues.apache.org/jira/browse/CLOUDSTACK-7412
Repository: cloudstack-git
Description
-------
[Abstract]
Root cause of this issue is a way to handle cache using S3 as
Secondary Storage.
When CloudStack uploads a disk image on Primary Storage(PS) to
Secondary Storage(SS), it caches the disk image on Secondary Staging
Store(SSS). This is a bug.
CloudStack uses disk image cache every time if the cache exists. For
this behavior, the old cache on SSS will be uploaded as a template
though a CloudStack user creates the template from a newer disk image
on PS than the cache.
So, we fixed this issue in a way that CloudStack deletes the cache on
SSS after CloudStack uploads disk image to SS.
[Details]
Process of handling cache is different between copy from SS to
PS(download) and copy from PS to SS(upload).
* Downloading a disk image from SS to PS
This is the case that a CloudStack user creates an instance from a
template. CloudStack caches the image on SSS.
* Uploading a disk image from PS to SS
This is the case that a CloudStack user creates a template from a disk
image of an instance. CloudStack shouldn't cache a disk image because
it usually happens that a cache image is older than a volume of an
instance.
However, there is a bug in branch condition about post process of
uploading a disk image. Then CloudStack doesn't delete the disk image
on SSS.
CloudStack uses a common method to copy a disk image between PS and SS
for upload and download. The method includes post process of disk
image cache.
As a part of post process, it is judged whether a disk image on SSS is
used as cache or not in this method:
a. Delete a disk image as upload procedure
b. Delete a disk image to handle errors
c. Cache a disk image as download procedure
In case of uploading a disk image, branch-a should be selected. But
branch-c is always selected by the condition bug. As a result, a disk
image is left on SSS and used as cache next time a CloudStack user
creates a template from an instance.
Diffs
-----
engine/storage/datamotion/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
d6759cb
Diff: https://reviews.apache.org/r/28511/diff/
Testing
-------
Items below are confirmed.
- A template created from an instance reflects a volume of the instance.
- No cache file exists on NFS secondary staging store.
- No cache entry exists on template_store_ref.
We use this patch in our environment.
Thanks,
Hiroki Ohashi