We tested the same scenario pointing to a mysql db and did not encounter deadlocks anymore. As you mentioned, this issue specifically occurs with H2 db.
On Fri, Mar 25, 2016 at 2:55 PM, Manuranga Perera <[email protected]> wrote: > [looping] > I think this coming form Greg layer and it is due to using H2. > Chandana please comment on this. > > On Fri, Mar 25, 2016 at 2:39 PM, Thilini Shanika <[email protected]> > wrote: > >> Adding Dev. >> >> On Fri, Mar 25, 2016 at 2:14 PM, Thilini Shanika <[email protected]> >> wrote: >> >>> >>> Hi ES team, >>> >>> During App Manager load testing on App Store user login we encountered >>> below exception (We are getting the error with 100 concurrent users). This >>> occurs during the initial user login at high concurrency. In each initial >>> user login, Internal/private_{username} role is created and it has been >>> assigned to the newly logged in user. The deadlock occurs during this role >>> creation time. >>> >>> Is ES Store login tested with high concurrency ? Or did you encounter >>> the similar issue in ES also? >>> >>> We are working on finding the root cause here. Thus, any insight would >>> be really appreciated. >>> >>> Thank you >>> Thilini >>> >>> ERROR - acs:jag org.mozilla.javascript.WrappedException: Wrapped >>> org.wso2.carbon.user.core.UserStoreException: Error! Deadlock detected. The >>> current transaction was rolled back. Details: " >>> Session #99 (user: WSO2CARBON) is waiting to lock PUBLIC.UM_PERMISSION >>> while locking PUBLIC.UM_ROLE_PERMISSION (exclusive). >>> Session #102 (user: WSO2CARBON) is waiting to lock >>> PUBLIC.UM_ROLE_PERMISSION while locking PUBLIC.UM_PERMISSION (exclusive)."; >>> SQL statement: >>> SELECT UM_ID, UM_IS_ALLOWED FROM UM_ROLE_PERMISSION WHERE UM_ROLE_NAME=? >>> AND UM_PERMISSION_ID = (SELECT UM_ID FROM UM_PERMISSION WHERE >>> UM_RESOURCE_ID = ? AND UM_ACTION = ? AND UM_TENANT_ID=?) AND UM_TENANT_ID=? >>> AND UM_DOMAIN_ID=(SELECT UM_DOMAIN_ID FROM UM_DOMAIN WHERE UM_TENANT_ID=? >>> AND UM_DOMAIN_NAME=?) [40001-140] (<carbon>/scripts/user/user-manager.js#98) >>> at >>> org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1754) >>> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:148) >>> at >>> org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225) >>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52) >>> at >>> org.jaggeryjs.rhino.<carbon>.scripts.user.c0._c_anonymous_21(<carbon>/scripts/user/user-manager.js:98) >>> at >>> org.jaggeryjs.rhino.<carbon>.scripts.user.c0.call(<carbon>/scripts/user/user-manager.js) >>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52) >>> at >>> org.jaggeryjs.rhino.<store>.scripts.c0._c_anonymous_10(<store>/scripts/user.js:97) >>> at org.jaggeryjs.rhino.<store>.scripts.c0.call(<store>/scripts/user.js) >>> at >>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>> at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>> at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) >>> at >>> org.jaggeryjs.rhino.<event>.scripts.c0._c_anonymous_7(<event>/scripts/event.js:71) >>> at org.jaggeryjs.rhino.<event>.scripts.c0.call(<event>/scripts/event.js) >>> at >>> org.mozilla.javascript.NativeArray.iterativeMethod(NativeArray.java:1584) >>> at org.mozilla.javascript.NativeArray.execIdCall(NativeArray.java:318) >>> at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>> at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>> at >>> org.jaggeryjs.rhino.<event>.scripts.c0._c_anonymous_6(<event>/scripts/event.js:69) >>> at org.jaggeryjs.rhino.<event>.scripts.c0.call(<event>/scripts/event.js) >>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52) >>> at >>> org.jaggeryjs.rhino.<store>.scripts.c0._c_anonymous_8(<store>/scripts/user.js:55) >>> at org.jaggeryjs.rhino.<store>.scripts.c0.call(<store>/scripts/user.js) >>> at >>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>> at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>> at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) >>> at >>> org.jaggeryjs.rhino.<event>.scripts.c0._c_anonymous_7(<event>/scripts/event.js:71) >>> at org.jaggeryjs.rhino.<event>.scripts.c0.call(<event>/scripts/event.js) >>> at >>> org.mozilla.javascript.NativeArray.iterativeMethod(NativeArray.java:1584) >>> at org.mozilla.javascript.NativeArray.execIdCall(NativeArray.java:318) >>> at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>> at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>> at >>> org.jaggeryjs.rhino.<event>.scripts.c0._c_anonymous_6(<event>/scripts/event.js:69) >>> at org.jaggeryjs.rhino.<event>.scripts.c0.call(<event>/scripts/event.js) >>> at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:52) >>> at >>> org.jaggeryjs.rhino.store.modules.c7._c_anonymous_1(/store/modules/role.js:36) >>> at org.jaggeryjs.rhino.store.modules.c7.call(/store/modules/role.js) >>> at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1._c_anonymous_1(/store/controllers/acs.jag:103) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1.call(/store/controllers/acs.jag) >>> at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1._c_script_0(/store/controllers/acs.jag:7) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1.call(/store/controllers/acs.jag) >>> at >>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394) >>> at >>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1.call(/store/controllers/acs.jag) >>> at >>> org.jaggeryjs.rhino.store.controllers.c1.exec(/store/controllers/acs.jag) >>> at >>> org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567) >>> at >>> org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273) >>> at >>> org.jaggeryjs.jaggery.core.manager.WebAppManager.exec(WebAppManager.java:587) >>> at >>> org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:507) >>> at >>> org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>> at >>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) >>> at >>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) >>> at >>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:378) >>> at >>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) >>> at >>> org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>> at >>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >>> at >>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >>> at >>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) >>> at >>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) >>> at >>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) >>> at >>> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57) >>> at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) >>> at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) >>> at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1698) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>> at >>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >>> at java.lang.Thread.run(Thread.java:745) >>> Caused by: org.wso2.carbon.user.core.UserStoreException: Error! Deadlock >>> detected. The current transaction was rolled back. Details: " >>> Session #99 (user: WSO2CARBON) is waiting to lock PUBLIC.UM_PERMISSION >>> while locking PUBLIC.UM_ROLE_PERMISSION (exclusive). >>> Session #102 (user: WSO2CARBON) is waiting to lock >>> PUBLIC.UM_ROLE_PERMISSION while locking PUBLIC.UM_PERMISSION (exclusive)."; >>> SQL statement: >>> SELECT UM_ID, UM_IS_ALLOWED FROM UM_ROLE_PERMISSION WHERE UM_ROLE_NAME=? >>> AND UM_PERMISSION_ID = (SELECT UM_ID FROM UM_PERMISSION WHERE >>> UM_RESOURCE_ID = ? AND UM_ACTION = ? AND UM_TENANT_ID=?) AND UM_TENANT_ID=? >>> AND UM_DOMAIN_ID=(SELECT UM_DOMAIN_ID FROM UM_DOMAIN WHERE UM_TENANT_ID=? >>> AND UM_DOMAIN_NAME=?) [40001-140] >>> at >>> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.addAuthorizationForRole(JDBCAuthorizationManager.java:837) >>> at >>> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.authorizeRole(JDBCAuthorizationManager.java:405) >>> at >>> org.wso2.carbon.registry.core.secure.AuthorizeRoleListener.authorizeRole(AuthorizeRoleListener.java:156) >>> at >>> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.authorizeRole(JDBCAuthorizationManager.java:396) >>> at >>> org.wso2.carbon.registry.core.secure.AuthorizeRoleListener.authorizeRole(AuthorizeRoleListener.java:156) >>> at >>> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.authorizeRole(JDBCAuthorizationManager.java:396) >>> at >>> org.wso2.carbon.user.core.common.AbstractUserStoreManager.doAddInternalRole(AbstractUserStoreManager.java:2942) >>> at >>> org.wso2.carbon.user.core.common.AbstractUserStoreManager.addRole(AbstractUserStoreManager.java:2499) >>> at >>> org.wso2.carbon.user.core.common.AbstractUserStoreManager.addRole(AbstractUserStoreManager.java:3951) >>> 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:606) >>> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126) >>> ... 89 more >>> Caused by: org.h2.jdbc.JdbcSQLException: Deadlock detected. The current >>> transaction was rolled back. Details: " >>> Session #99 (user: WSO2CARBON) is waiting to lock PUBLIC.UM_PERMISSION >>> while locking PUBLIC.UM_ROLE_PERMISSION (exclusive). >>> Session #102 (user: WSO2CARBON) is waiting to lock >>> PUBLIC.UM_ROLE_PERMISSION while locking PUBLIC.UM_PERMISSION (exclusive)."; >>> SQL statement: >>> SELECT UM_ID, UM_IS_ALLOWED FROM UM_ROLE_PERMISSION WHERE UM_ROLE_NAME=? >>> AND UM_PERMISSION_ID = (SELECT UM_ID FROM UM_PERMISSION WHERE >>> UM_RESOURCE_ID = ? AND UM_ACTION = ? AND UM_TENANT_ID=?) AND UM_TENANT_ID=? >>> AND UM_DOMAIN_ID=(SELECT UM_DOMAIN_ID FROM UM_DOMAIN WHERE UM_TENANT_ID=? >>> AND UM_DOMAIN_NAME=?) [40001-140] >>> at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) >>> at org.h2.message.DbException.get(DbException.java:167) >>> at org.h2.message.DbException.get(DbException.java:144) >>> at org.h2.table.RegularTable.doLock(RegularTable.java:457) >>> at org.h2.table.RegularTable.lock(RegularTable.java:404) >>> at org.h2.table.TableFilter.lock(TableFilter.java:139) >>> at org.h2.command.dml.Select.queryWithoutCache(Select.java:554) >>> at org.h2.command.dml.Query.query(Query.java:241) >>> at org.h2.command.CommandContainer.query(CommandContainer.java:80) >>> at org.h2.command.Command.executeQuery(Command.java:132) >>> at >>> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) >>> at >>> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.addAuthorizationForRole(JDBCAuthorizationManager.java:783) >>> ... 102 more >>> >>> -- >>> Thilini Shanika >>> Software Engineer >>> WSO2, Inc.; http://wso2.com >>> 20, Palmgrove Avenue, Colombo 3 >>> >>> E-mail: [email protected] >>> >>> >> >> >> -- >> Thilini Shanika >> Software Engineer >> WSO2, Inc.; http://wso2.com >> 20, Palmgrove Avenue, Colombo 3 >> >> E-mail: [email protected] >> >> > > > -- > With regards, > *Manu*ranga Perera. > > phone : 071 7 70 20 50 > mail : [email protected] > -- Thilini Shanika Software Engineer WSO2, Inc.; http://wso2.com 20, Palmgrove Avenue, Colombo 3 E-mail: [email protected]
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
