[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-7077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14054579#comment-14054579
 ] 

Likitha Shetty edited comment on CLOUDSTACK-7077 at 7/8/14 6:48 AM:
--------------------------------------------------------------------

This is only reproducible when we try to attach volumes to a VM in fast 
succession.
In VMware following 2 steps are followed during disk attach to a VM
1. Preparing the disk that needs to be attached
2. Re-configuring the VM to attach the prepared disk device

Step 1 involves figuring out what should be the device number on the controller 
key that the disk will be connected to.
Step 1 and Step 2 are not synchronized in our code. So when we try to attach to 
2 disks in quick succession, while preparing the second disk if the VM is still 
being re-configured with the first disk (i.e. Step 2 is in progress for the 
first disk), then device number of the first disk will be chosen for the second 
disk too. And this will result in Invalid configuration for device 'x' error 
where x is the device number on the controller key that the first disk is 
connected to.


was (Author: likithas):
This is only reproducible when we try to attach volumes to a VM IN fast 
succession.
In VMware following 2 steps are followed during disk attach to a VM
1. Preparing the disk that needs to be attached
2. Re-configuring the VM to attach the prepared disk device

Step 1 involves figuring out what should be the device number on the controller 
key that the disk will be connected to.
Step 1 and Step 2 are not synchronized in our code. So when we try to attach to 
2 disks in quick succession, while preparing the second disk if the VM is still 
being re-configured with the first disk (i.e. Step 2 is in progress for the 
first disk), then device number of the first disk will be chosen for the second 
disk too. And this will result in Invalid configuration for device 'x' error 
where x is the device number on the controller key that the first disk is 
connected to.

> Quickly attaching multiple data disks to a VM fails
> ---------------------------------------------------
>
>                 Key: CLOUDSTACK-7077
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-7077
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: VMware, Volumes
>    Affects Versions: 4.2.0
>            Reporter: Likitha Shetty
>            Assignee: Likitha Shetty
>            Priority: Critical
>             Fix For: 4.5.0
>
>
> When trying to attach multiple data disks to a VM in quick succession, 
> AttachVolumeCmds consistently fail with the below exception -.
> {noformat}
> 2014-05-19 15:55:18,776 ERROR [storage.resource.VmwareStorageProcessor] 
> (DirectAgent-xxx) AttachVolumeCommand failed due to Exception: 
> java.lang.RuntimeException
> Message: Invalid configuration for device '0'.
> java.lang.RuntimeException: Invalid configuration for device '0'.
> at 
> com.cloud.hypervisor.vmware.util.VmwareClient.waitForTask(VmwareClient.java:412)
> at 
> com.cloud.hypervisor.vmware.mo.VirtualMachineMO.attachDisk(VirtualMachineMO.java:1026)
> at 
> com.cloud.storage.resource.VmwareStorageProcessor.attachVolume(VmwareStorageProcessor.java:1281)
> at 
> com.cloud.storage.resource.VmwareStorageProcessor.attachVolume(VmwareStorageProcessor.java:1216)
> at 
> com.cloud.storage.resource.StorageSubsystemCommandHandlerBase.execute(StorageSubsystemCommandHandlerBase.java:129)
> at 
> com.cloud.storage.resource.StorageSubsystemCommandHandlerBase.handleStorageCommands(StorageSubsystemCommandHandlerBase.java:55)
> at 
> com.cloud.hypervisor.vmware.resource.VmwareResource.executeRequest(VmwareResource.java:559)
> at 
> com.cloud.agent.manager.DirectAgentAttache$Task.run(DirectAgentAttache.java:186)
> 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.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
> at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:679)
> 2014-05-19 15:55:18,778 DEBUG [agent.manager.DirectAgentAttache] 
> (DirectAgent-151:null) Seq 51-1760168847: Response Received:
> 2014-05-19 15:55:18,778 DEBUG [agent.transport.Request] 
> (DirectAgent-151:null) Seq 51-1760168847: Processing: { Ans: , MgmtId: 
> 345052289567, via: 51, Ver: v1, Flags: 10, 
> [{"org.apache.cloudstack.storage.command.AttachAnswer":{"result":false,"details":"AttachVolumeCommand
>  failed due to Exception: java.lang.RuntimeException\nMessage: Invalid 
> configuration for device '0'.\n","wait":0}}] }
> 2014-05-19 15:55:18,778 DEBUG [agent.transport.Request] 
> (Job-Executor-37:job-23717 = [ d261e185-5c78-407e-b3c4-f0d5fcf711df ]) Seq 
> 51-1760168847: Received: { Ans: , MgmtId: 345052289567, via: 51, Ver: v1, 
> Flags: 10,
> { AttachAnswer }
> }
> 2014-05-19 15:55:18,786 ERROR [cloud.async.AsyncJobManagerImpl] 
> (Job-Executor-37:job-23717 = [ d261e185-5c78-407e-b3c4-f0d5fcf711df ]) 
> Unexpected exception while executing 
> org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> com.cloud.utils.exception.CloudRuntimeException: Failed to attach volume: 
> psvgwin28c3pfeng [2] to VM: 37e328e4-c620-48a2-9e35-1fc5225d5a4b; 
> AttachVolumeCommand failed due to Exception: java.lang.RuntimeException
> Message: Invalid configuration for device '0'.
> at 
> com.cloud.storage.VolumeManagerImpl.sendAttachVolumeCommand(VolumeManagerImpl.java:1712)
> at 
> com.cloud.storage.VolumeManagerImpl.attachVolumeToVM(VolumeManagerImpl.java:1944)
> at 
> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
> at 
> org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd.execute(AttachVolumeCmd.java:122)
> 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:1110)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:679)
> 2014-05-19 15:55:18,789 DEBUG [cloud.async.AsyncJobManagerImpl] 
> (Job-Executor-37:job-23717 = [ d261e185-5c78-407e-b3c4-f0d5fcf711df ]) 
> Complete async job-23717 = [ d261e185-5c78-407e-b3c4-f0d5fcf711df ], 
> jobStatus: 2, resultCode: 530, result: Error Code: 530 Error text: Failed to 
> attach volume: psvgwin28c3pfeng [2] to VM: 
> 37e328e4-c620-48a2-9e35-1fc5225d5a4b; AttachVolumeCommand failed due to 
> Exception: java.lang.RuntimeException
> Message: Invalid configuration for device '0'.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to