[
https://issues.apache.org/jira/browse/CLOUDSTACK-4121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13731607#comment-13731607
]
ASF subversion and git services commented on CLOUDSTACK-4121:
-------------------------------------------------------------
Commit 789ac14c14fe3d37c1b49b6d0b32a6ee01f0017e in branch refs/heads/master
from [~mlsorensen]
[ https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;h=789ac14 ]
Summary: CLOUDSTACK-4121 fix local storage volume deployment
Detail: Fix hypervisor type lookup for local storage volumes by
adding in a statement for the 'HOST' storage scope.
Reviewed-by: Rajesh Battala
> local storage can't find hypervisor type
> ----------------------------------------
>
> Key: CLOUDSTACK-4121
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-4121
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Affects Versions: 4.2.0
> Reporter: Marcus Sorensen
> Assignee: Rajesh Battala
> Priority: Blocker
> Fix For: 4.2.0
>
>
> Deployed a fresh 4.2 zone with local storage. It seemed to fail in getting
> hypervisor type for volumes created on this storage:
> 2013-08-06 15:55:29,873 WARN [cloud.vm.SystemVmLoadScanner]
> (secstorage-1:null) Unexpected exception DB Exception on: null
> com.cloud.utils.exception.CloudRuntimeException: DB Exception on: null
> at
> com.cloud.storage.dao.VolumeDaoImpl.getHypervisorType(VolumeDaoImpl.java:261)
> at
> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
> at
> org.apache.cloudstack.storage.volume.VolumeObject.getHypervisorType(VolumeObject.java:448)
> at
> org.apache.cloudstack.storage.to.VolumeObjectTO.<init>(VolumeObjectTO.java:72)
> at
> org.apache.cloudstack.storage.volume.VolumeObject.getTO(VolumeObject.java:460)
> at
> org.apache.cloudstack.storage.datastore.driver.CloudStackPrimaryDataStoreDriverImpl.deleteAsync(CloudStackPrimaryDataStoreDriverImpl.java:127)
> at
> org.apache.cloudstack.storage.volume.VolumeServiceImpl.expungeVolumeAsync(VolumeServiceImpl.java:285)
> at
> com.cloud.storage.VolumeManagerImpl.cleanupVolumes(VolumeManagerImpl.java:2120)
> at
> com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
> at
> com.cloud.vm.VirtualMachineManagerImpl.advanceExpunge(VirtualMachineManagerImpl.java:492)
> at
> com.cloud.vm.VirtualMachineManagerImpl.expunge(VirtualMachineManagerImpl.java:434)
> at
> com.cloud.storage.secondary.SecondaryStorageManagerImpl.destroySecStorageVm(SecondaryStorageManagerImpl.java:995)
> at
> com.cloud.storage.secondary.SecondaryStorageManagerImpl.allocCapacity(SecondaryStorageManagerImpl.java:720)
> at
> com.cloud.storage.secondary.SecondaryStorageManagerImpl.expandPool(SecondaryStorageManagerImpl.java:1307)
> at
> com.cloud.secstorage.PremiumSecondaryStorageManagerImpl.scanPool(PremiumSecondaryStorageManagerImpl.java:123)
> at
> com.cloud.secstorage.PremiumSecondaryStorageManagerImpl.scanPool(PremiumSecondaryStorageManagerImpl.java:50)
> at
> com.cloud.vm.SystemVmLoadScanner.loadScan(SystemVmLoadScanner.java:104)
> at
> com.cloud.vm.SystemVmLoadScanner.access$100(SystemVmLoadScanner.java:33)
> at
> com.cloud.vm.SystemVmLoadScanner$1.reallyRun(SystemVmLoadScanner.java:81)
> at com.cloud.vm.SystemVmLoadScanner$1.run(SystemVmLoadScanner.java:72)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:722)
> Caused by: java.sql.SQLException: SQL String can not be NULL
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
> at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
> at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:946)
> at
> com.mysql.jdbc.JDBC4PreparedStatement.<init>(JDBC4PreparedStatement.java:48)
> at sun.reflect.GeneratedConstructorAccessor58.newInstance(Unknown
> Source)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
> at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> at
> com.mysql.jdbc.PreparedStatement.getInstance(PreparedStatement.java:882)
> at
> com.mysql.jdbc.ConnectionImpl.clientPrepareStatement(ConnectionImpl.java:1518)
> at
> com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4313)
> at
> com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4212)
> at
> org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
> at
> org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313)
> at com.cloud.utils.db.Transaction.prepareStatement(Transaction.java:468)
> at
> com.cloud.utils.db.Transaction.prepareAutoCloseStatement(Transaction.java:460)
> at
> com.cloud.storage.dao.VolumeDaoImpl.getHypervisorType(VolumeDaoImpl.java:250)
> ... 36 more
> I installed an nfs primary storage and turned off local storage for system
> vms and things magically started working.
> Looking at the volume_view table in the database shows that every volume has
> hypervisor_type of 'KVM', whether the failed local storage volumes or the nfs
> primary storage.
> Looking at VolumeDaoImpl:
> if (scope == ScopeType.CLUSTER)
> sql = SELECT_HYPERTYPE_FROM_CLUSTER_VOLUME;
> else if (scope == ScopeType.ZONE)
> sql = SELECT_HYPERTYPE_FROM_ZONE_VOLUME;
> If I run the SELECT_HYPERTYPE_FROM_ZONE_VOLUME sql query against a local
> volume, I get:
> mysql> SELECT s.hypervisor from volumes v, storage_pool s where v.pool_id =
> s.id and v.id = 55;
> +------------+
> | hypervisor |
> +------------+
> | NULL |
> +------------+
> If I run the cluster query I get:
> mysql> SELECT c.hypervisor_type from volumes v, storage_pool s, cluster c
> where v.pool_id = s.id and s.cluster_id = c.id and v.id = 55
> -> ;
> +-----------------+
> | hypervisor_type |
> +-----------------+
> | KVM |
> +-----------------+
> We should probably switch that if/else statement to use the cluster call for
> local storage.
--
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