You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cloudstack.apache.org by "Rahul Rege (JIRA)" <ji...@apache.org> on 2014/09/24 14:01:34 UTC

[jira] [Commented] (CLOUDSTACK-7590) Deletion of Account is not deleting the account from the database

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

Rahul Rege commented on CLOUDSTACK-7590:
----------------------------------------

I tried to reproduce this on 4.4 first but it works correctly. It does create multiple users inside the db with same name on subsequent removal and addition of accounts but does not give any error of user already present when its removed. I then upgraded to 4.5 and during upgrade itself it failed because I had 2 deleted users in the db with same name. So, I had to redeploy the db and given that it is not allowing the same username, I am sure it will give the error. 

The db schema has changed in 4.5 which has caused this issue and it would fail to create a new user with same name and also during upgrades in case you have recreated any users in the past on earlier versions, it will not migrate the db due to different schema (unless there is another way to do it)

Fixing the db schema seems to be the right choice here than removing the user alltogether in case they are using it for some auditing purpose.

> Deletion of Account is not deleting the account from the database
> -----------------------------------------------------------------
>
>                 Key: CLOUDSTACK-7590
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-7590
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: Management Server
>    Affects Versions: 4.5.0
>            Reporter: Chandan Purushothama
>            Priority: Critical
>             Fix For: 4.5.0
>
>
> Deletion of account marks the account as removed in the database but doesnt remove the record from the database as shown below:
> mysql> select * from account where removed is not null \G
> *************************** 1. row ***************************
>              id: 7
>    account_name: CSRegularVPNClientUser
>            uuid: 96e06a77-fa96-4e38-b380-023d406d445e
>            type: 0
>       domain_id: 1
>           state: enabled
>         removed: 2014-09-20 00:33:41
>  cleanup_needed: 0
>  network_domain: NULL
> default_zone_id: NULL
>         default: 0
> 1 row in set (0.00 sec)
> mysql>
> *If anyone wants to recreate the account with the same name. It fails with the below exception:*
> {noformat}
> 2014-09-20 00:27:05,880 DEBUG [c.c.u.AccountManagerImpl] (catalina-exec-11:ctx-bfa880b6 ctx-e82baf36 ctx-1b71100c) Creating user: CSRegularVPNClientUser, accountId: 6 timezone:null
> 2014-09-20 00:27:05,882 DEBUG [c.c.u.d.T.Transaction] (catalina-exec-11:ctx-bfa880b6 ctx-e82baf36 ctx-1b71100c) Rolling back the transaction: Time = 16 Name =  catalina-exec-11; called by -TransactionLegacy.rollback:902-TransactionLegacy.removeUpTo:845-TransactionLegacy.close:669-TransactionContextInterceptor.invoke:36-ReflectiveMethodInvocation.proceed:161-ExposeInvocationInterceptor.invoke:91-ReflectiveMethodInvocation.proceed:172-JdkDynamicAopProxy.invoke:204-$Proxy67.persist:-1-AccountManagerImpl.createUser:1962-AccountManagerImpl$2.doInTransaction:1039-AccountManagerImpl$2.doInTransaction:1027
> 2014-09-20 00:27:05,898 ERROR [c.c.a.ApiServer] (catalina-exec-11:ctx-bfa880b6 ctx-e82baf36 ctx-1b71100c) unhandled exception executing api command: [Ljava.lang.String;@5b4cfa82
> javax.persistence.EntityExistsException: Entity already exists:
>         at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1398)
>         at com.cloud.user.dao.UserDaoImpl.persist(UserDaoImpl.java:141)
>         at com.cloud.user.dao.UserDaoImpl.persist(UserDaoImpl.java:33)
>         at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         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 $Proxy67.persist(Unknown Source)
>         at com.cloud.user.AccountManagerImpl.createUser(AccountManagerImpl.java:1962)
>         at com.cloud.user.AccountManagerImpl$2.doInTransaction(AccountManagerImpl.java:1039)
>         at com.cloud.user.AccountManagerImpl$2.doInTransaction(AccountManagerImpl.java:1027)
>         at com.cloud.utils.db.Transaction$2.doInTransaction(Transaction.java:49)
>         at com.cloud.utils.db.Transaction.execute(Transaction.java:37)
>         at com.cloud.utils.db.Transaction.execute(Transaction.java:46)
>         at com.cloud.user.AccountManagerImpl.createUserAccount(AccountManagerImpl.java:1027)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         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 org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:106)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
>         at com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:51)
>         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 $Proxy103.createUserAccount(Unknown Source)
>         at org.apache.cloudstack.api.command.admin.account.CreateAccountCmd.execute(CreateAccountCmd.java:178)
>         at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:141)
>         at com.cloud.api.ApiServer.queueCommand(ApiServer.java:694)
>         at com.cloud.api.ApiServer.handleRequest(ApiServer.java:517)
>         at com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:273)
>         at com.cloud.api.ApiServlet$1.run(ApiServlet.java:117)
>         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:114)
>         at com.cloud.api.ApiServlet.doGet(ApiServlet.java:76)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>         at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:889)
>         at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:721)
>         at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2268)
>         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:722)
> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'CSRegularVPNClientUser-1' for key 'username_domain_id'
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>         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.Util.getInstance(Util.java:386)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
>         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
>         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
>         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
>         at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)
>         at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
>         at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
>         at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1363)
>         ... 64 more
> 2014-09-20 00:27:05,903 DEBUG [c.c.a.ApiServlet] (catalina-exec-11:ctx-bfa880b6 ctx-e82baf36 ctx-1b71100c) ===END===  10.216.51.74 -- GET  username=CSRegularVPNClientUser&domainid=67a6f7dc-4047-11e4-9e25-5a8ae31eab72&firstname=CSRegularVPNClientUser&lastname=CSRegularVPNClientUser&email=test-S5XWMF%40cloudstack.org&apiKey=aAAdPAVcNDNlYRtqsu7zxXQB2RNLd7yuDxjiOk4W9w3pGAiHcOmrhQahv16pqaMy43aDgadlTMO-qGrlTOc2Gw&command=createAccount&accounttype=0&signature=Ii0C7t5A3WlRoe04tAEBvtWjB0U%3D&response=json
> 2014-09-20 00:27:06,042 DEBUG [c.c.a.ApiServlet] (catalina-exec-14:ctx-e289f9f7) ===START===  10.216.51.74 -- GET  username=CSRegularVPNClientUser&apiKey=aAAdPAVcNDNlYRtqsu7zxXQB2RNLd7yuDxjiOk4W9w3pGAiHcOmrhQahv16pqaMy43aDgadlTMO-qGrlTOc2Gw&command=listUsers&signature=XjS0FiZp3Q7QoT%2BxxPZN1%2BKtlEc%3D&response=json&listall=True
> {noformat}



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