-----------------------------------------------------------
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

Reply via email to