You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cloudstack.apache.org by "Abhinav Roy (JIRA)" <ji...@apache.org> on 2013/07/09 08:39:58 UTC

[jira] [Closed] (CLOUDSTACK-1881) [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.

     [ https://issues.apache.org/jira/browse/CLOUDSTACK-1881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Abhinav Roy closed CLOUDSTACK-1881.
-----------------------------------

    
> [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