Prachi Damle created CLOUDSTACK-5895:
----------------------------------------
Summary: CreateVolumeFromSnapshot can fail in a multiple pod
environment with tagged storagepool
Key: CLOUDSTACK-5895
URL: https://issues.apache.org/jira/browse/CLOUDSTACK-5895
Project: CloudStack
Issue Type: Bug
Security Level: Public (Anyone can view this level - this is the default.)
Components: Management Server
Affects Versions: 4.2.0
Reporter: Prachi Damle
Assignee: Prachi Damle
Priority: Critical
Fix For: 4.3.0
Failed to create volume from snapshot.
REPRO STEPS
=======================
SetUp: Use a setup having multiple pods.
1. Tag two primary storages in the same cluster with two different tag's say
one for root disk 'ROOT_DISK' and another for data disk 'DATA_DISK'.
2. Create corresponding compute offering and disk offering .
3. Launch an instance using the above created compute offering
4. Add the data disk later.
5. Create a snapshot of the data disk and try to create a volume out of it.
It appears that no Storagepool is found suitable to create the volume. But the
bug is actually caused because of the code below which skips the volume
creation even if a suitable storage pool is found:
Root cause of the issue is this bug in VolumeManagerImpl:
// Determine what pod to store the volume in
while ((pod = findPod(null, null, dc, account.getId(), podsToAvoid)) != null) {
podsToAvoid.add(pod.first().getId());
// Determine what storage pool to store the volume in
while ((pool = findStoragePool(dskCh, dc, pod.first(), null, null, null,
poolsToAvoid)) != null)
{ break; }
}
The 'findStoragePool' calls the Allocators that returns suitable pool - the
inner loop ends - but the outer loops continues to find another pod until no
pod is left.
This is the bug causing the create Volume from Snapshot usecase fail - and it
will affect always in such a setup.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)