[
https://issues.apache.org/jira/browse/CLOUDSTACK-7077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14054579#comment-14054579
]
Likitha Shetty commented on CLOUDSTACK-7077:
--------------------------------------------
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)