[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-3946?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rajesh Battala updated CLOUDSTACK-3946:
---------------------------------------

    Status: Ready To Review  (was: In Progress)
    
> [KVM] [Zone Wide Primary Storages] migrateVolume is deleting the volume if 
> the source and destination pool are same.
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-3946
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-3946
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Storage Controller
>    Affects Versions: 4.2.0
>         Environment: commit # 6275d697e340be5b520f37b15d72343fa47c00a9
>            Reporter: venkata swamybabu budumuru
>            Assignee: Rajesh Battala
>            Priority: Critical
>             Fix For: 4.2.0
>
>         Attachments: logs.tgz
>
>
> Steps to reproduce : 
> 1. Have at least one advanced zone with KVM cluster (2 kvm hosts) 
> 2. Make sure that the setup has at least 2 zone wide primary storages. (from 
> ex: zwps1, zwps2) 
> 3. Deploy a VM as admin 
> 4. Create a datadisk of size 5 GB as admin on zwps1 
> 5. attach the above datadisk to the VM in step 3 
> 6. detach the data disk 
> 7. initiate migrateVolume command for the above datadisk to again zwps1
> Observations:
> (i) volume migrate command involved 2 things
> - copyCommand
> - delete the original
> (ii) In my case, I tried to migrate the volume which is on zwps1 to again 
> zwps1. This initiated copyCommand followed by storage.command.DeleteCommand.
> (iii)  Due to the issue mentioned in CLOUDSTACK-3943, copy command failed. 
> The subsequent delete command deleted the orignal volume because the "path 
> uuid" for original volume and new volume is maintained with same uuid 
> temporarily.
> *** Either we shouldn't let user fire migrateVolume API with storageId if the 
> volume's original storageId and destStorageId are same.
> (OR)
> *** we should use a unique path UUID so that in case of copy command failure, 
> it will only delete the new volume.
> MGMT server log snippet :
> 2013-07-30 15:40:35,945 DEBUG [cloud.storage.StorageManagerImpl] 
> (StorageManager-Scavenger-1:null) Secondary storage garbage collector found 0 
> volumes to cleanup on volume_store_ref for store: secondary2
> 2013-07-30 15:40:35,967 DEBUG [agent.manager.DirectAgentAttache] 
> (DirectAgent-279:null) Seq 6-1249116579: Response Received:
> 2013-07-30 15:40:35,969 DEBUG [storage.motion.AncientDataMotionStrategy] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) copyAsync 
> inspecting src type VOLUME copyAsync inspecting dest type VOLUME
> 2013-07-30 15:40:35,970 DEBUG [agent.transport.Request] 
> (StatsCollector-1:null) Seq 6-1249116579: Received:  { Ans: , MgmtId: 
> 7280707764394, via: 6, Ver: v1, Flags: 10, { GetHostStatsAnswer } }
> 2013-07-30 15:40:35,974 DEBUG [cache.allocator.StorageCacheRandomAllocator] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Can't 
> find staging storage in zone: 1
> 2013-07-30 15:40:36,033 DEBUG [agent.transport.Request] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Seq 
> 3-46924274: Sending  { Cmd , MgmtId: 7280707764394, via: 3, Ver: v1, Flags: 
> 100011, 
> [{"org.apache.cloudstack.storage.command.CopyCommand":{"srcTO":{"org.apache.cloudstack.storage.to.VolumeObjectTO":{"uuid":"8e27413a-9904-4b04-88e2-4646f9e2012e","volumeType":"DATADISK","dataStore":{"org.apache.cloudstack.storage.to.PrimaryDataStoreTO":{"uuid":"5458182e-bfcb-351c-97ed-e7223bca2b8e","id":1,"poolType":"NetworkFilesystem","host":"10.147.28.7","path":"/export/home/swamy/primary.campo.kvm.1.zone","port":2049}},"name":"adminDataDisk2","size":0,"path":"a8923a0d-401c-453a-bf77-0e4496711f0d","volumeId":13,"accountId":2,"format":"QCOW2","id":13,"hypervisorType":"None"}},"destTO":{"org.apache.cloudstack.storage.to.VolumeObjectTO":{"uuid":"8e27413a-9904-4b04-88e2-4646f9e2012e","volumeType":"DATADISK","dataStore":{"com.cloud.agent.api.to.NfsTO":{"_url":"nfs://10.147.28.7/export/home/swamy/secondary.campo.kvm.1","_role":"Image"}},"name":"adminDataDisk2","size":0,"path":"volumes/2/13","volumeId":13,"accountId":2,"format":"QCOW2","id":13,"hypervisorType":"None"}},"executeInSequence":false,"wait":10800}}]
>  }
> 2013-07-30 15:40:36,039 DEBUG [agent.transport.Request] 
> (AgentManager-Handler-4:null) Seq 3-46924274: Processing:  { Ans: , MgmtId: 
> 7280707764394, via: 3, Ver: v1, Flags: 10, 
> [{"com.cloud.agent.api.UnsupportedAnswer":{"result":false,"details":"Unsupported
>  command issued:org.apache.cloudstack.storage.command.CopyCommand.  Are you 
> sure you got the right type of server?","wait":0}}] }
> 2013-07-30 15:40:36,039 DEBUG [agent.transport.Request] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Seq 
> 3-46924274: Received:  { Ans: , MgmtId: 7280707764394, via: 3, Ver: v1, 
> Flags: 10, { UnsupportedAnswer } }
> 2013-07-30 15:40:36,039 WARN  [agent.manager.AgentManagerImpl] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) 
> Unsupported Command: Unsupported command 
> issued:org.apache.cloudstack.storage.command.CopyCommand.  Are you sure you 
> got the right type of server?
> 2013-07-30 15:40:36,039 DEBUG [storage.motion.AncientDataMotionStrategy] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) copy to 
> image store failed: Unsupported command 
> issued:org.apache.cloudstack.storage.command.CopyCommand.  Are you sure you 
> got the right type of server?
> 2013-07-30 15:40:36,062 DEBUG [storage.image.BaseImageStoreDriverImpl] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Unable to 
> destoy VOLUME: 13
> java.lang.NullPointerException
>         at 
> org.apache.cloudstack.storage.volume.VolumeObject.getPath(VolumeObject.java:338)
>         at 
> org.apache.cloudstack.storage.to.VolumeObjectTO.<init>(VolumeObjectTO.java:53)
>         at 
> org.apache.cloudstack.storage.volume.VolumeObject.getTO(VolumeObject.java:460)
>         at 
> org.apache.cloudstack.storage.image.BaseImageStoreDriverImpl.deleteAsync(BaseImageStoreDriverImpl.java:225)
>         at 
> org.apache.cloudstack.storage.image.store.ImageStoreImpl.delete(ImageStoreImpl.java:148)
>         at 
> org.apache.cloudstack.storage.motion.AncientDataMotionStrategy.copyVolumeBetweenPools(AncientDataMotionStrategy.java:302)
>         at 
> org.apache.cloudstack.storage.motion.AncientDataMotionStrategy.copyAsync(AncientDataMotionStrategy.java:381)
>         at 
> org.apache.cloudstack.storage.motion.DataMotionServiceImpl.copyAsync(DataMotionServiceImpl.java:55)
>         at 
> org.apache.cloudstack.storage.volume.VolumeServiceImpl.copyVolume(VolumeServiceImpl.java:782)
>         at 
> com.cloud.storage.VolumeManagerImpl.migrateVolume(VolumeManagerImpl.java:2210)
>         at 
> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>         at 
> com.cloud.storage.VolumeManagerImpl.migrateVolume(VolumeManagerImpl.java:2202)
>         at 
> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>         at 
> org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd.execute(MigrateVolumeCmd.java:102)
>         at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:158)
>         at 
> com.cloud.async.AsyncJobManagerImpl$1.run(AsyncJobManagerImpl.java:531)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:679)
> 2013-07-30 15:40:36,064 WARN  
> [storage.datastore.ObjectInDataStoreManagerImpl] (Job-Executor-40:job-40 = [ 
> 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Volume 13 is not found on image store 
> 1, so no need to delete
> 2013-07-30 15:40:36,087 WARN  
> [storage.datastore.ObjectInDataStoreManagerImpl] (Job-Executor-40:job-40 = [ 
> 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Unsupported data object (VOLUME, 
> org.apache.cloudstack.storage.datastore.PrimaryDataStoreImpl@75103941)
> 2013-07-30 15:40:36,101 WARN  
> [storage.datastore.ObjectInDataStoreManagerImpl] (Job-Executor-40:job-40 = [ 
> 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Unsupported data object (VOLUME, 
> org.apache.cloudstack.storage.datastore.PrimaryDataStoreImpl@3af3cacd)
> 2013-07-30 15:40:36,193 DEBUG [agent.transport.Request] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Seq 
> 3-46924275: Sending  { Cmd , MgmtId: 7280707764394, via: 3, Ver: v1, Flags: 
> 100011, 
> [{"org.apache.cloudstack.storage.command.DeleteCommand":{"data":{"org.apache.cloudstack.storage.to.VolumeObjectTO":{"uuid":"05d76cf3-7df5-459f-a9a9-7a0a271ff5d6","volumeType":"DATADISK","dataStore":{"org.apache.cloudstack.storage.to.PrimaryDataStoreTO":{"uuid":"5458182e-bfcb-351c-97ed-e7223bca2b8e","id":1,"poolType":"NetworkFilesystem","host":"10.147.28.7","path":"/export/home/swamy/primary.campo.kvm.1.zone","port":2049}},"name":"adminDataDisk2","size":0,"path":"a8923a0d-401c-453a-bf77-0e4496711f0d","volumeId":15,"accountId":2,"id":15,"hypervisorType":"None"}},"wait":0}}]
>  }
> 2013-07-30 15:40:36,338 DEBUG [agent.transport.Request] 
> (AgentManager-Handler-9:null) Seq 3-46924275: Processing:  { Ans: , MgmtId: 
> 7280707764394, via: 3, Ver: v1, Flags: 10, 
> [{"com.cloud.agent.api.Answer":{"result":true,"wait":0}}] }
> 2013-07-30 15:40:36,338 DEBUG [agent.transport.Request] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Seq 
> 3-46924275: Received:  { Ans: , MgmtId: 7280707764394, via: 3, Ver: v1, 
> Flags: 10, { Answer } }
> 2013-07-30 15:40:36,358 INFO  [storage.volume.VolumeServiceImpl] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Volume 15 
> is not referred anywhere, remove it from volumes table
> 2013-07-30 15:40:36,374 ERROR [cloud.storage.VolumeManagerImpl] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) migrate 
> volume failed:Unsupported command 
> issued:org.apache.cloudstack.storage.command.CopyCommand.  Are you sure you 
> got the right type of server?
> 2013-07-30 15:40:36,376 DEBUG [cloud.async.AsyncJobManagerImpl] 
> (Job-Executor-40:job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ]) Complete 
> async job-40 = [ 24eb5a75-590f-43a9-bb90-88be177fa359 ], jobStatus: 2, 
> resultCode: 530, result: Error Code: 530 Error text: Failed to migrate volume

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to