[ 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