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

Reply via email to