cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sanjeev N (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-9380) listDomains API returns NPE if there is a failure in deleting domains
Date Tue, 17 May 2016 12:42:12 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-9380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15286523#comment-15286523
] 

Sanjeev N commented on CLOUDSTACK-9380:
---------------------------------------

Most of the tests in Regression test suite are failing because of this issue and we are not
able to validate the functionalities by running regression.
Can somebody please pick this and fix as early as possible?

> listDomains API returns NPE if there is a failure in deleting domains
> ---------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-9380
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9380
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: Management Server
>    Affects Versions: 4.9.0
>         Environment: Latest build from master
>            Reporter: Sanjeev N
>            Priority: Critical
>         Attachments: cloud.sql, vmops.log
>
>
> listDomains API returns NPE if there is a failure in deleting domains
> Steps to Reproduce:
> ================
> 1.Create few domains under root domain and create one or two accounts in each domain
> 2.Create few vms, volumes, snapshots with those accounts.
> 3.Now delete the domains and for one of the domains simulate the domain deletion failure
> 4.Try to list the domains using listDomains api without any domain id paramter
> Result:
> ======
> listDomains API returns error code 530 and in the management server log we see following
NPE:
> 2016-05-16 08:53:09,273 ERROR [c.c.a.ApiServer] (qtp237306958-12297:ctx-8f28bbf4 ctx-fdb614d0
ctx-6466fb85) (logid:d17482a8) unhandled exception executing api command: [Ljava.lang.String;@652d471e
> java.lang.NullPointerException
>         at com.cloud.api.query.dao.DomainJoinDaoImpl.setResourceLimits(DomainJoinDaoImpl.java:113)
>         at com.cloud.api.query.dao.DomainJoinDaoImpl.newDomainResponse(DomainJoinDaoImpl.java:76)
>         at sun.reflect.GeneratedMethodAccessor351.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>         at com.cloud.utils.db.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:34)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
>         at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>         at com.sun.proxy.$Proxy272.newDomainResponse(Unknown Source)
>         at com.cloud.api.ApiDBUtils.newDomainResponse(ApiDBUtils.java:1834)
>         at com.cloud.api.query.ViewResponseHelper.createDomainResponse(ViewResponseHelper.java:354)
>         at com.cloud.api.query.QueryManagerImpl.searchForDomains(QueryManagerImpl.java:1880)
>         at org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd.execute(ListDomainsCmd.java:87)
>         at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:150)
>         at com.cloud.api.ApiServer.queueCommand(ApiServer.java:705)
>         at com.cloud.api.ApiServer.handleRequest(ApiServer.java:529)
>         at com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:299)
>         at com.cloud.api.ApiServlet$1.run(ApiServlet.java:129)
>         at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
>         at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
>         at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
>         at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:126)
>         at com.cloud.api.ApiServlet.doGet(ApiServlet.java:88)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>         at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
>         at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
>         at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>         at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
>         at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
>         at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
>         at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
>         at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>         at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
>         at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>         at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
>         at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
>         at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>         at org.eclipse.jetty.server.Server.handle(Server.java:499)
>         at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
>         at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
>         at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
>         at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>         at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>         at java.lang.Thread.run(Thread.java:744)
> 2016-05-16 08:53:09,276 DEBUG [c.c.a.ApiServlet] (qtp237306958-12297:ctx-8f28bbf4 ctx-fdb614d0
ctx-6466fb85) (logid:d17482a8) ===END===  172.16.88.7 -- GET  apiKey=I1Vj6dA8tmVTJopVVZlgR7y6LU92d_AeUaXxbdbZhpJgu4BJ2MpfWD2xE2b8ZYd70qPA10_rDYucnQVmHNJHZw&command=listDomains&signature=gfujxqFCCJZHbDVx%2Bm8VsakdE4g%3D&response=json
> Observations:
> ============
> When there was a failure in deleting the domain, resouce_count table didn't have any
entries for that domain id. So count filed for all the resources in domain_view table was
set to NULL. This could be the reason for listDomains to return NPE.
> mysql> select * from domain where id=70;
> +----+--------+-----------+--------------------------------------+-------+-------------+-------+-------------+----------------+---------+--------+----------------+--------+
> | id | parent | name      | uuid                                 | owner | path     
  | level | child_count | next_child_seq | removed | state  | network_domain | type   |
> +----+--------+-----------+--------------------------------------+-------+-------------+-------+-------------+----------------+---------+--------+----------------+--------+
> | 70 |      1 | D1-UE6QW6 | 612da7a8-0bff-4792-9dcd-08d14d19515b |     2 | /D1-UE6QW6/
|     1 |           1 |              3 | NULL    | Active | NULL           | Normal |
> +----+--------+-----------+--------------------------------------+-------+-------------+-------+-------------+----------------+---------+--------+----------------+--------+
> 1 row in set (0.00 sec)
> mysql> select * from domain_view where id=70\G
> *************************** 1. row ***************************
>                    id: 70
>                parent: 1
>                  name: D1-UE6QW6
>                  uuid: 612da7a8-0bff-4792-9dcd-08d14d19515b
>                 owner: 2
>                  path: /D1-UE6QW6/
>                 level: 1
>           child_count: 1
>        next_child_seq: 3
>               removed: NULL
>                 state: Active
>        network_domain: NULL
>                  type: Normal
>               vmLimit: NULL
>               vmTotal: NULL
>               ipLimit: NULL
>               ipTotal: NULL
>           volumeLimit: NULL
>           volumeTotal: NULL
>         snapshotLimit: NULL
>         snapshotTotal: NULL
>         templateLimit: NULL
>         templateTotal: NULL
>              vpcLimit: NULL
>              vpcTotal: NULL
>          projectLimit: NULL
>          projectTotal: NULL
>          networkLimit: NULL
>          networkTotal: NULL
>              cpuLimit: NULL
>              cpuTotal: NULL
>           memoryLimit: NULL
>           memoryTotal: NULL
>   primaryStorageLimit: NULL
>   primaryStorageTotal: NULL
> secondaryStorageLimit: NULL
> secondaryStorageTotal: NULL
> 1 row in set (0.00 sec)
> mysql> select * from resource_count where domain_id=70;
> Empty set (0.00 sec)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message