Hi Charitha, When an operation response get stored DM_ENROLMENT_OP_MAPPING table gets an "update" while DM_DEVICE_OPERATION_RESPONSE gets an "insert" from the response data. AFAIK when an update happens it will lock the table, depending on the transactions handling [1 - Transaction Isolation] of H2 database. And if there is a response burst, this error could happen. I think H2 database may not be able to handle the load.
[1] http://www.h2database.com/html/advanced.html Thanks Geeth On Tue, Jan 23, 2018 at 12:39 PM, Charitha Goonetilleke <charit...@wso2.com> wrote: > Hi All, > > I have encountered following exception intermittently on IoTS Update 11, > when testing with Android device. > > [2018-01-23 12:19:51,077] [IoT-Core] ERROR - {org.wso2.carbon.mdm.services. > android.services.impl.DeviceManagementServiceImpl} Issue in retrieving > operation management service instance > org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException: > Error occurred while updating the operation: 90 status:COMPLETED > at org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl. > updateOperation(OperationManagerImpl.java:551) > at org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServic > eImpl.updateOperation(DeviceManagementProviderServiceImpl.java:1426) > at org.wso2.carbon.mdm.services.android.util.AndroidDeviceUtils. > updateOperation(AndroidDeviceUtils.java:211) > at org.wso2.carbon.mdm.services.android.services.impl. > DeviceManagementServiceImpl.updateOperations(DeviceManagementServiceImpl. > java:184) > at org.wso2.carbon.mdm.services.android.services.impl. > DeviceManagementServiceImpl.getPendingOperations( > DeviceManagementServiceImpl.java:139) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation( > AbstractInvoker.java:188) > at org.apache.cxf.service.invoker.AbstractInvoker. > invoke(AbstractInvoker.java:104) > at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:204) > at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:101) > at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1. > run(ServiceInvokerInterceptor.java:58) > at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage( > ServiceInvokerInterceptor.java:94) > at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept( > PhaseInterceptorChain.java:272) > at org.apache.cxf.transport.ChainInitiationObserver.onMessage( > ChainInitiationObserver.java:121) > at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke( > AbstractHTTPDestination.java:249) > at org.apache.cxf.transport.servlet.ServletController.invokeDestination( > ServletController.java:248) > at org.apache.cxf.transport.servlet.ServletController. > invoke(ServletController.java:222) > at org.apache.cxf.transport.servlet.ServletController. > invoke(ServletController.java:153) > at org.apache.cxf.transport.servlet.CXFNonSpringServlet. > invoke(CXFNonSpringServlet.java:171) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest( > AbstractHTTPServlet.java:289) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet. > doPut(AbstractHTTPServlet.java:226) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:653) > at org.apache.cxf.transport.servlet.AbstractHTTPServlet. > service(AbstractHTTPServlet.java:265) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:303) > 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.wso2.carbon.mdm.services.android.util.ApiOriginFilter. > doFilter(ApiOriginFilter.java:33) > 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:218) > at org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:110) > at org.apache.catalina.authenticator.AuthenticatorBase.invoke( > AuthenticatorBase.java:506) > at org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:169) > 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.webapp.authenticator.framework. > WebappAuthenticationValve.processRequest(WebappAuthenticationValve. > java:151) > at org.wso2.carbon.webapp.authenticator.framework. > WebappAuthenticationValve.invoke(WebappAuthenticationValve.java:69) > 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.CarbonStuckThreadDetectionValv > e.invoke(CarbonStuckThreadDetectionValve.java:159) > at org.apache.catalina.valves.AccessLogValve.invoke( > AccessLogValve.java:962) > 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:445) > at org.apache.coyote.http11.AbstractHttp11Processor.process( > AbstractHttp11Processor.java:1115) > at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler. > process(AbstractProtocol.java:637) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1770) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > run(NioEndpoint.java:1729) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) > 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.device.mgt.core.operation.mgt.dao. > OperationManagementDAOException: Error occurred while inserting operation > response > at org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl. > GenericOperationDAOImpl.addOperationResponse(GenericOperationDAOImpl.java: > 213) > at org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl. > updateOperation(OperationManagerImpl.java:544) > ... 58 more > Caused by: org.h2.jdbc.JdbcSQLException: Deadlock detected. The current > transaction was rolled back. Details: " > Session #49 (user: WSO2CARBON) on thread pool-54-thread-1 is waiting to > lock PUBLIC.DM_ENROLMENT_OP_MAPPING while locking PUBLIC.DM_OPERATION > (exclusive), PUBLIC.DM_COMMAND_OPERATION (exclusive). > Session #59 (user: WSO2CARBON) on thread http-nio-9443-exec-27 is waiting > to lock PUBLIC.DM_OPERATION while locking PUBLIC.DM_ENROLMENT_OP_MAPPING > (exclusive), PUBLIC.DM_DEVICE_OPERATION_RESPONSE (exclusive)."; SQL > statement: > INSERT INTO DM_DEVICE_OPERATION_RESPONSE(OPERATION_ID, ENROLMENT_ID, > EN_OP_MAP_ID, OPERATION_RESPONSE, RECEIVED_TIMESTAMP) VALUES(?, ?, ?, ?, ?) > [40001-175] > at org.h2.message.DbException.getJdbcSQLException(DbException.java:332) > at org.h2.message.DbException.get(DbException.java:172) > at org.h2.message.DbException.get(DbException.java:149) > at org.h2.table.RegularTable.doLock(RegularTable.java:504) > at org.h2.table.RegularTable.lock(RegularTable.java:450) > at org.h2.constraint.ConstraintReferential.existsRow( > ConstraintReferential.java:375) > at org.h2.constraint.ConstraintReferential.checkRowOwnTable( > ConstraintReferential.java:367) > at org.h2.constraint.ConstraintReferential.checkRow( > ConstraintReferential.java:310) > at org.h2.table.Table.fireConstraints(Table.java:894) > at org.h2.table.Table.fireAfterRow(Table.java:911) > at org.h2.command.dml.Insert.insertRows(Insert.java:162) > at org.h2.command.dml.Insert.update(Insert.java:115) > at org.h2.command.CommandContainer.update(CommandContainer.java:79) > at org.h2.command.Command.executeUpdate(Command.java:253) > at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal( > JdbcPreparedStatement.java:154) > at org.h2.jdbc.JdbcPreparedStatement.executeUpdate( > JdbcPreparedStatement.java:140) > at org.wso2.carbon.device.mgt.core.operation.mgt.dao.impl. > GenericOperationDAOImpl.addOperationResponse(GenericOperationDAOImpl.java: > 211) > ... 59 more > > > Thanks & regards, > /charithag > -- > *Charitha Goonetilleke* > Senior Software Engineer > WSO2 Inc.; http://wso2.com > lean.enterprise.middleware > > mobile: +94 77 751 3669 <%2B94777513669> > Twitter:@CharithaWs <https://twitter.com/CharithaWs>, fb: charithag > <https://www.facebook.com/charithag>, linkedin: charithag > <http://www.linkedin.com/in/charithag> > > <http://wso2.com/signature> > -- *Geeth Munasinghe* *WSO2, Inc. http://wso2.com <http://wso2.com/> * *lean.enterprise.middleware.* email: ge...@wso2.com phone:(+94) 777911226 <http://wso2.com/signature>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev