sureshanaparti opened a new issue, #11425:
URL: https://github.com/apache/cloudstack/issues/11425

   ### problem
   
   Live migration of VM with config drive fails with error: 
java.lang.NullPointerException: Cannot invoke 
"com.cloud.storage.Storage$StoragePoolType.toString()" because "type" is null.
   
   The first migration attempt removes the config drive from the xml, and the 
second attempt succeeds, but no  config drive attached to it (after migration)
   
   
   MS log:
   ```
   2025-08-11 06:01:10,887 DEBUG [c.c.a.m.ClusteredAgentAttache] 
(Work-Job-Executor-8:[ctx-9716983a, job-46/job-47, ctx-0e302ca4]) 
(logid:115dd2bf) Seq 4-6100688645226770330: Routed from 32985852150177
   2025-08-11 06:01:10,891 DEBUG [c.c.a.t.Request] 
(Work-Job-Executor-8:[ctx-9716983a, job-46/job-47, ctx-0e302ca4]) 
(logid:115dd2bf) Seq 1-6100688645226770330: Sending  { Cmd , MgmtId: 
32985852150177, via: 1(ref-trl-9195-k-Mol8-suresh-anaparti-kvm1), Ver: v1, 
Flags: 100011, 
[{"com.cloud.agent.api.MigrateCommand":{"vmName":"i-2-5-VM","destIp":"10.0.32.165","migrateStorageManaged":"false","migrateNonSharedInc":"false","autoConvergence":"false","hostGuid":"39ed092a-9e7b-32fd-b99f-8412af2d12e5-LibvirtComputingResource","isWindows":"false","vmTO":{"id":"5","name":"i-2-5-VM","state":"Running","type":"User","cpus":"1","minSpeed":"250","maxSpeed":"500","minRam":"(512.00
 MB) 536870912","maxRam":"(512.00 MB) 536870912","arch":"x86_64","os":"CentOS 
5.5 (64-bit)","platformEmulator":"CentOS 
5.5","bootArgs":"","enableHA":"false","limitCpuUse":"false","enableDynamicallyScaleVm":"false","params":{"configDriveLocation":"SECONDARY","cpuOvercommitRatio":"2.0"},"uuid":"8bb0d860-5b61-43c2-a128-21d467db0
 
dc3","enterHardwareSetup":"false","disks":[{"data":{"org.apache.cloudstack.storage.to.TemplateObjectTO":{"path":"configdrive/i-2-5-VM.iso","uuid":"8bb0d860-5b61-43c2-a128-21d467db0dc3","id":"0","format":"ISO","accountId":"0","hvm":"false","imageDataStore":{"com.cloud.agent.api.to.NfsTO":{"_url":"NFS://10.0.32.4/acs/secondary/ref-trl-9195-k-Mol8-suresh-anaparti/ref-trl-9195-k-Mol8-suresh-anaparti-sec1","_role":"Image"}},"bootable":"false","directDownload":"false","deployAsIs":"false","followRedirects":"false"}},"diskSeq":"4","path":"configdrive/i-2-5-VM.iso","type":"ISO"},{"data":{"org.apache.cloudstack.storage.to.VolumeObjectTO":{"uuid":"080f64dd-d627-42f4-8281-60efc9140835","volumeType":"ROOT","dataStore":{"org.apache.cloudstack.storage.to.PrimaryDataStoreTO":{"uuid":"cf1bf14f-0193-3fab-bb25-69f5793330e6","name":"ref-trl-9195-k-Mol8-suresh-anaparti-kvm-pri2","id":"2","poolType":"NetworkFilesystem","host":"10.0.32.4","path":"/acs/primary/ref-trl-9195-k-Mol8-suresh-anaparti/ref-trl-9
 
195-k-Mol8-suresh-anaparti-kvm-pri2","port":"2049","url":"NetworkFilesystem://10.0.32.4/acs/primary/ref-trl-9195-k-Mol8-suresh-anaparti/ref-trl-9195-k-Mol8-suresh-anaparti-kvm-pri2/?ROLE=Primary&STOREUUID=cf1bf14f-0193-3fab-bb25-69f5793330e6","isManaged":"false"}},"name":"ROOT-5","size":"(8.00
 GB) 
8589934592","path":"080f64dd-d627-42f4-8281-60efc9140835","volumeId":"8","vmName":"i-2-5-VM","accountId":"2","format":"QCOW2","provisioningType":"THIN","poolId":"2","id":"8","deviceId":"0","bytesReadRate":"(0
 bytes) 0","bytesWriteRate":"(0 bytes) 0","iopsReadRate":"(0 bytes) 
0","iopsWriteRate":"(0 bytes) 
0","hypervisorType":"KVM","directDownload":"false","deployAsIs":"false","followRedirects":"false"}},"diskSeq":"0","path":"080f64dd-d627-42f4-8281-60efc9140835","type":"ROOT","_details":{"storageHost":"10.0.32.4","managed":"false","storagePort":"2049","storage.pool.disk.wait":"60","volumeSize":"(8.00
 GB) 
8589934592"}},{"data":{"org.apache.cloudstack.storage.to.TemplateObjectTO":{"id":"0","f
 
ormat":"ISO","accountId":"0","hvm":"false","bootable":"false","directDownload":"false","deployAsIs":"false","followRedirects":"false"}},"diskSeq":"3","type":"ISO"}],"nics":[{"deviceId":"0","networkRateMbps":"200","defaultNic":"true","pxeDisable":"false","nicUuid":"a8d499fe-c315-4109-a1d0-ee74e41e3e99","details":{"ForgedTransmits":"true","internetProtocol":"IPv4","PromiscuousMode":"false","MacAddressChanges":"true","MacLearning":"false"},"dpdkEnabled":"false","networkId":"204","networkSegmentName":"D1-A2-Z1-S204","uuid":"96a34786-bf05-40e7-bfe6-00becfb5f47c","ip":"10.1.1.236","netmask":"255.255.255.0","gateway":"10.1.1.1","mac":"02:01:00:cc:00:03","dns1":"10.0.32.1","dns2":"8.8.8.8","broadcastType":"Vlan","type":"Guest","broadcastUri":"vlan://1082","isolationUri":"vlan://1082","isSecurityGroupEnabled":"false","name":"cloudbr1"}],"vcpuMaxLimit":"1","vmData":[["metadata","service-offering","Small
 
Instance"],["metadata","availability-zone","ref-trl-9195-k-Mol8-suresh-anaparti"],["metada
 
ta","local-hostname","testvm02"],["metadata","local-ipv4","10.1.1.236"],["metadata","public-ipv4","10.1.1.236"],["metadata","public-hostname",],["metadata","instance-id","8bb0d860-5b61-43c2-a128-21d467db0dc3"],["metadata","vm-id","8bb0d860-5b61-43c2-a128-21d467db0dc3"],["metadata","public-keys",],["metadata","cloud-identifier","CloudStack-{d49fa504-d0fe-410b-8e67-ab94e1a7a75b}"],["metadata","hypervisor-host-name",]],"configDriveLabel":"config-2","configDriveLocation":"SECONDARY","guestOsDetails":{},"extraConfig":{},"networkIdToNetworkNameMap":{"204":"D1-A2-Z1-S204"}},"executeInSequence":"false","migrateDiskInfoList":[],"dpdkInterfaceMapping":{},"newVmCpuShares":"250","vlanToPersistenceMap":{"1082":"true"},"wait":"0","bypassHostMaintenance":"false"}}]
 }
   2025-08-11 06:01:11,002 DEBUG [c.c.a.t.Request] (AgentManager-Handler-12:[]) 
(logid:) Seq 1-6100688645226770330: Processing:  { Ans: , MgmtId: 
32985852150177, via: 1, Ver: v1, Flags: 10, 
[{"com.cloud.agent.api.Answer":{"result":"false","details":"java.lang.NullPointerException:
 Cannot invoke "com.cloud.storage.Storage$StoragePoolType.toString()" because 
"type" is null
        at 
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createStoragePool(LibvirtStorageAdaptor.java:736)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.createStoragePool(KVMStoragePoolManager.java:393)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.getStoragePoolByURI(KVMStoragePoolManager.java:339)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.attachOrDetachISO(LibvirtComputingResource.java:3513)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.detachAndAttachConfigDriveISO(LibvirtComputingResource.java:3492)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:232)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:88)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper.execute(LibvirtRequestWrapper.java:78)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1958)
        at com.cloud.agent.Agent.processRequest(Agent.java:779)
        at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:1194)
        at com.cloud.utils.nio.Task.call(Task.java:83)
        at com.cloud.utils.nio.Task.call(Task.java:29)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
   ","wait":"0","bypassHostMaintenance":"false"}}] }
   2025-08-11 06:01:11,003 DEBUG [c.c.a.t.Request] 
(Work-Job-Executor-8:[ctx-9716983a, job-46/job-47, ctx-0e302ca4]) 
(logid:115dd2bf) Seq 1-6100688645226770330: Received:  { Ans: , MgmtId: 
32985852150177, via: 1(ref-trl-9195-k-Mol8-suresh-anaparti-kvm1), Ver: v1, 
Flags: 10, { Answer } }
   2025-08-11 06:01:11,003 INFO  [c.c.v.ClusteredVirtualMachineManagerImpl] 
(Work-Job-Executor-8:[ctx-9716983a, job-46/job-47, ctx-0e302ca4]) 
(logid:115dd2bf) Migration was unsuccessful.  Cleaning up: VM instance 
{"id":5,"instanceName":"i-2-5-VM","state":"Migrating","type":"User","uuid":"8bb0d860-5b61-43c2-a128-21d467db0dc3"}
   2025-08-11 06:01:11,013 DEBUG [o.a.c.e.o.VolumeOrchestrator] 
(Work-Job-Executor-8:[ctx-9716983a, job-46/job-47, ctx-0e302ca4]) 
(logid:115dd2bf) Releasing [1] volumes for VM [VM instance 
{"id":5,"instanceName":"i-2-5-VM","state":"Migrating","type":"User","uuid":"8bb0d860-5b61-43c2-a128-21d467db0dc3"}]
 from host [Host 
{"id":2,"name":"ref-trl-9195-k-Mol8-suresh-anaparti-kvm2","type":"Routing","uuid":"fa74f4d2-e5c6-4382-8d42-e42c195095f5"}].
   ```
   
   Agent log:
   ```
   2025-08-11 06:01:10,997 DEBUG [kvm.resource.LibvirtComputingResource] 
(AgentRequest-Handler-1:[]) (logid:) Attaching ConfigDrive ISO of the VM 
i-2-5-VM, at path /mnt/3e0fe9c4-bcad-3a7d-9350-44694b760e74/i-2-5-VM.iso
   2025-08-11 06:01:10,997 DEBUG [kvm.storage.KVMStoragePoolManager] 
(AgentRequest-Handler-1:[]) (logid:) Get storage pool by uri: 
/mnt/3e0fe9c4-bcad-3a7d-9350-44694b760e74
   2025-08-11 06:01:10,999 WARN  [cloud.agent.Agent] 
(AgentRequest-Handler-1:[]) (logid:) Caught: java.lang.NullPointerException: 
Cannot invoke "com.cloud.storage.Storage$StoragePoolType.toString()" because 
"type" is null
        at 
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createStoragePool(LibvirtStorageAdaptor.java:736)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.createStoragePool(KVMStoragePoolManager.java:393)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.getStoragePoolByURI(KVMStoragePoolManager.java:339)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.attachOrDetachISO(LibvirtComputingResource.java:3513)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.detachAndAttachConfigDriveISO(LibvirtComputingResource.java:3492)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:232)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:88)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper.execute(LibvirtRequestWrapper.java:78)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1958)
        at com.cloud.agent.Agent.processRequest(Agent.java:779)
        at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:1194)
        at com.cloud.utils.nio.Task.call(Task.java:83)
        at com.cloud.utils.nio.Task.call(Task.java:29)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
   
   2025-08-11 06:01:11,003 DEBUG [cloud.agent.Agent] 
(AgentRequest-Handler-1:[]) (logid:) Seq 1-6100688645226770330:  { Ans: , 
MgmtId: 32985852150177, via: 1, Ver: v1, Flags: 10, 
[{"com.cloud.agent.api.Answer":{"result":"false","details":"java.lang.NullPointerException:
 Cannot invoke "com.cloud.storage.Storage$StoragePoolType.toString()" because 
"type" is null
        at 
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createStoragePool(LibvirtStorageAdaptor.java:736)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.createStoragePool(KVMStoragePoolManager.java:393)
        at 
com.cloud.hypervisor.kvm.storage.KVMStoragePoolManager.getStoragePoolByURI(KVMStoragePoolManager.java:339)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.attachOrDetachISO(LibvirtComputingResource.java:3513)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.detachAndAttachConfigDriveISO(LibvirtComputingResource.java:3492)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:232)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtMigrateCommandWrapper.execute(LibvirtMigrateCommandWrapper.java:88)
        at 
com.cloud.hypervisor.kvm.resource.wrapper.LibvirtRequestWrapper.execute(LibvirtRequestWrapper.java:78)
        at 
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1958)
        at com.cloud.agent.Agent.processRequest(Agent.java:779)
        at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:1194)
        at com.cloud.utils.nio.Task.call(Task.java:83)
        at com.cloud.utils.nio.Task.call(Task.java:29)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
   ","wait":"0","bypassHostMaintenance":"false"}}] }
   ```
   
   Before migrate (first attempt):
   ```
   [root@kvm1 ~]# virsh dumpxml i-2-5-VM | grep iso
         <entry name='product'>CloudStack KVM Hypervisor</entry>
       <feature policy='require' name='hypervisor'/>
         <source file='/mnt/3e0fe9c4-bcad-3a7d-9350-44694b760e74/i-2-5-VM.iso' 
index='1'/>
   [root@kvm1 ~]#
   ```
   
   After migrate (first attempt failed):
   ```
   [root@kvm1 ~]# virsh dumpxml i-2-5-VM | grep iso
         <entry name='product'>CloudStack KVM Hypervisor</entry>
       <feature policy='require' name='hypervisor'/>
   [root@kvm1 ~]#
   ```
   
   After migrate (second attempt success):
   ```
   [root@kvm2 ~]# virsh dumpxml i-2-5-VM | grep iso
         <entry name='product'>CloudStack KVM Hypervisor</entry>
       <feature policy='require' name='hypervisor'/>
   [root@kvm2 ~]#
   ```
   
   ### versions
   
   ACS 4.20.1 / KVM hypervisor / NFS as primary storage
   
   ### The steps to reproduce the bug
   
   1. Create a network offering with config drive for user data service
   2. Create a network with the above offering
   3. Deploy a VM on the above network.
   4. Live migrate the VM to another KVM host
   
   
   
   ### What to do about it?
   
   The Live migration should succeed, along with config drive to the 
destination host.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to