[ https://issues.apache.org/jira/browse/CLOUDSTACK-1881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Abhinandan Prateek reassigned CLOUDSTACK-1881: ---------------------------------------------- Assignee: edison su > [Upgrade 4.0 to 4.2] After upgrading from 4.0 to 4.2 the 'storage provide > name' and 'scope' fields in the cloud.storage_pool table is left blank, due > to which we get a NPE while doing any operation involving primary storage. > -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: CLOUDSTACK-1881 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-1881 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Components: Install and Setup > Affects Versions: 4.2.0 > Environment: 4.0 to 4.2 upgrade > Host : XEN > Reporter: Abhinav Roy > Assignee: edison su > Priority: Blocker > Fix For: 4.2.0 > > > After doing upgrade from 4.0 to 4.2 , if we try to restart domain router, > ssvm or cpvm we get the following NPE > 2013-04-01 19:43:20,808 ERROR [cloud.async.AsyncJobManagerImpl] > (Job-Executor-4:job-30) Unexpected exception while executing > org.apache.cloudstack.api.command.admin.router.RebootRouterCmd > java.lang.NullPointerException > at > org.apache.cloudstack.storage.datastore.manager.DefaultPrimaryDataStoreProviderManagerImpl.getPrimaryDataStore(DefaultPrimaryDataStoreProviderManagerImpl.java:62) > at > org.apache.cloudstack.storage.datastore.DataStoreManagerImpl.getPrimaryDataStore(DataStoreManagerImpl.java:71) > at > com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:662) > at > com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:462) > at > com.cloud.network.router.VirtualNetworkApplianceManagerImpl.start(VirtualNetworkApplianceManagerImpl.java:2625) > at > com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startVirtualRouter(VirtualNetworkApplianceManagerImpl.java:1834) > at > com.cloud.network.router.VirtualNetworkApplianceManagerImpl.startRouter(VirtualNetworkApplianceManagerImpl.java:2883) > at > com.cloud.network.router.VirtualNetworkApplianceManagerImpl.rebootRouter(VirtualNetworkApplianceManagerImpl.java:610) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > org.apache.cloudstack.api.command.admin.router.RebootRouterCmd.execute(RebootRouterCmd.java:99) > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:164) > at > com.cloud.async.AsyncJobManagerImpl$1.run(AsyncJobManagerImpl.java:437) > 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) > Reason : > =================================== > 1. In a CS 4.2 setup , when we look at the cloud.storage_pool table contents, > we have something like this .............. > mysql> SELECT * FROM cloud.storage_pool; > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+---------------------+---------+ > | id | name | uuid | pool_type | > port | data_center_id | pod_id | cluster_id | available_bytes | > capacity_bytes | host_address | user_info | path | > created | removed | update_time | status | storage_provider_id | > scope | > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+---------------------+---------+ > | 200 | xen-pri | cfc506df-7966-3f22-91c9-98b1a617ea56 | NetworkFilesystem | > 2049 | 1 | NULL | NULL | 0 | > 0 | 10.102.192.100 | NULL | /cpg_vol/abhinav/xen-pri | 2013-03-26 > 08:25:11 | NULL | NULL | Up | 3 | ZONE | > | 201 | xen-pri2 | 337e7421-d2a1-3367-9786-2fd56ca55c35 | NetworkFilesystem | > 2049 | 1 | 1 | 1 | 291308044288 | > 879609315328 | 10.102.192.100 | NULL | /cpg_vol/abhinav/xen-pri2 | > 2013-03-26 08:27:55 | NULL | NULL | Up | 3 | > CLUSTER | > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+---------------------+---------+ > 2 rows in set (0.00 sec) > Here we see that there are 2 columns 'storage_provider_id' and 'scope' which > define the storage provider and scope [zone, cluster, host] for any primary > storage. > ********************************************************************************************************************************************************************************************** > Now, lets look at the same table on an upgraded setup [4.0 to 4.2] > mysql> SELECT * FROM cloud.storage_pool; > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+-------------------------------------+---------+ > | id | name | uuid | pool_type | > port | data_center_id | pod_id | cluster_id | available_bytes | > capacity_bytes | host_address | user_info | path | > created | removed | update_time | status | storage_provider_name > | scope | > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+-------------------------------------+---------+ > | 200 | xen-pri | 8ceba66c-26ab-31cc-b0c8-e31574b3fa25 | NetworkFilesystem | > 2049 | 1 | 1 | 1 | 221016424448 | > 879609315328 | 10.102.192.100 | NULL | /cpg_vol/abhinav/xen-pri3 | > 2013-04-01 10:56:47 | NULL | NULL | Up | | > | > | 201 | xen-pri4 | 6424ea9d-4de5-3507-93fe-b2ccd082effb | NetworkFilesystem | > 2049 | 1 | 1 | 1 | 223764348928 | > 879609315328 | 10.102.192.100 | NULL | /cpg_vol/abhinav/xen-pri4 | > 2013-04-02 05:22:18 | NULL | NULL | Up | ancient primary data > store provider | CLUSTER | > +-----+----------+--------------------------------------+-------------------+------+----------------+--------+------------+-----------------+----------------+----------------+-----------+---------------------------+---------------------+---------+-------------+--------+-------------------------------------+---------+ > 2 rows in set (0.00 sec) > i) Again here if we take a look at the 1st entry(1st row) in this table then > we find that first of all instead of 'storage_provider_id' we have > 'storage_provider_name' and that field is left blank, and the 'scope' field > also is left blank, due to which the MS is not able to get the scope of the > primary storage and hence the NPE. > ii) The 2nd entry in this table is for another primary storage which i added > after upgrade and there we can see that the value for > storage_provider_name = ancient primary data store provider > scope = CLUSTER > Workaround : > ======================================================= > After upgrade if we go to the cloud DB and manually edit the fields > 'storage_provider_name' and 'scope' to appropriate values we can get the > setup working. -- 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