cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rahul Rege (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-7590) Deletion of Account is not deleting the account from the database
Date Wed, 24 Sep 2014 12:01:34 GMT

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

Mime
View raw message