cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abhinav Roy (JIRA)" <j...@apache.org>
Subject [jira] [Created] (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.
Date Tue, 02 Apr 2013 06:35:15 GMT
Abhinav Roy created CLOUDSTACK-1881:
---------------------------------------

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

Mime
View raw message