【问题标题】:Runtime synchronization failed in MobileFirst 7.0 ServerMobileFirst 7.0 Server 中的运行时同步失败
【发布时间】:2015-07-16 06:54:30
【问题描述】:

在将适配器部署到 Worklight 控制台时发现此错误。我们通过重新启动应用程序服务器(apache tomcat)来解决问题。

与此相关的日志:

日志文件:catalina.2015-07-16.log

SEVERE: Operation to deploy adapter 'LoginHTTPAdapter' failed.
java.lang.IllegalStateException: removeAttribute: Session already invalidated
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1373)
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1348)
    at org.apache.catalina.session.StandardSessionFacade.removeAttribute(StandardSessionFacade.java:171)
    at com.worklight.core.auth.impl.AuthenticationContext.destroy(AuthenticationContext.java:332)
    at com.worklight.integration.model.AdapterSessionContainer.destroyAdapterSessions(AdapterSessionContainer.java:71)
    at com.worklight.integration.services.impl.AdapterManagerImpl.closeAdapterResources(AdapterManagerImpl.java:144)
    at com.worklight.integration.services.impl.AdapterManagerImpl.deployAdapter(AdapterManagerImpl.java:87)
    at com.worklight.twopc.runtime.AdapterDeployAction.commit(AdapterDeployAction.java:50)
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:203)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

Jul 16, 2015 2:28:39 PM com.worklight.core.auth.impl.AuthenticationFilter setSyncRequired
INFO: FWLSE0273I: Set sync required to 'true' [project worklight]
Jul 16, 2015 2:28:39 PM com.worklight.core.jmx.ProjectSynchronizationBean sync
SEVERE: FWLSE0081E: Failed synchronizing application from the administration service. This prevents the application from running. The reason is There was an error during the rollback, the runtime is not in sync with the other nodes. Status CombineStatusMessage [children=[StatusMessage [severity=ERROR, message='removeAttribute: Session already invalidated', timestamp=1437028119197, detailedMessage=java.lang.IllegalStateException: removeAttribute: Session already invalidated
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1373)
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1348)
    at org.apache.catalina.session.StandardSessionFacade.removeAttribute(StandardSessionFacade.java:171)
    at com.worklight.core.auth.impl.AuthenticationContext.destroy(AuthenticationContext.java:332)
    at com.worklight.integration.model.AdapterSessionContainer.destroyAdapterSessions(AdapterSessionContainer.java:71)
    at com.worklight.integration.services.impl.AdapterManagerImpl.closeAdapterResources(AdapterManagerImpl.java:144)
    at com.worklight.integration.services.impl.AdapterManagerImpl.deployAdapter(AdapterManagerImpl.java:87)
    at com.worklight.twopc.runtime.AdapterDeployAction.commit(AdapterDeployAction.java:50)
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:203)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

]], super=StatusMessage [severity=ERROR, message='Commit', timestamp=1437028119197, detailedMessage=null]]. Please restart the application server after taking the proper corrective actions. [project worklight]
OutOfSyncException [receivedTransactionDetails=com.worklight.common.type.TransactionDetails{currentTransactionId=1437028119196, previousTransactionId=1437028118819 is dbMaster=false, lastTransactionID=1437028118819]
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:213)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

Jul 16, 2015 2:28:39 PM StatusMessage createStatusMessage
SEVERE: Synchronize operation failed.
OutOfSyncException [receivedTransactionDetails=com.worklight.common.type.TransactionDetails{currentTransactionId=1437028119196, previousTransactionId=1437028118819 is dbMaster=false, lastTransactionID=1437028118819]
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:213)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

Jul 16, 2015 2:28:39 PM com.ibm.worklight.admin.jmx.JMXCommunicationUtil logOperationResult
SEVERE: Result: worklight: null///192.168.135.4: Runtime synchronization failed
Jul 16, 2015 2:28:39 PM com.ibm.worklight.admin.jmx.JMXCommunicationUtil logOperationResult
INFO: worklight: null///192.168.135.4: 2015-07-16T06:28:38.819Z: Preparation to deploy 'DuDuHuanBao' finished
Jul 16, 2015 2:28:39 PM com.ibm.worklight.admin.jmx.JMXCommunicationUtil logOperationResult
INFO: worklight: null///192.168.135.4: 2015-07-16T06:28:39.196Z: Preparation to deploy adapter 'LoginHTTPAdapter' finished successfully, FWLSE0103W: Procedure 'onLogout' will always require authentication when connectAs='endUser'. [project worklight]
Jul 16, 2015 2:28:39 PM com.ibm.worklight.admin.jmx.JMXCommunicationUtil logOperationResult
SEVERE: worklight: null///192.168.135.4: 2015-07-16T06:28:39.198Z: There was an error during the rollback, the runtime is not in sync with the other nodes. Status CombineStatusMessage [children=[StatusMessage [severity=ERROR, message='removeAttribute: Session already invalidated', timestamp=1437028119197, detailedMessage=java.lang.IllegalStateException: removeAttribute: Session already invalidated
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1373)
    at org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.java:1348)
    at org.apache.catalina.session.StandardSessionFacade.removeAttribute(StandardSessionFacade.java:171)
    at com.worklight.core.auth.impl.AuthenticationContext.destroy(AuthenticationContext.java:332)
    at com.worklight.integration.model.AdapterSessionContainer.destroyAdapterSessions(AdapterSessionContainer.java:71)
    at com.worklight.integration.services.impl.AdapterManagerImpl.closeAdapterResources(AdapterManagerImpl.java:144)
    at com.worklight.integration.services.impl.AdapterManagerImpl.deployAdapter(AdapterManagerImpl.java:87)
    at com.worklight.twopc.runtime.AdapterDeployAction.commit(AdapterDeployAction.java:50)
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:203)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

]], super=StatusMessage [severity=ERROR, message='Commit', timestamp=1437028119197, detailedMessage=null]]
Jul 16, 2015 2:28:39 PM StatusMessage createStatusMessage
SEVERE: Cannot synchronized
com.worklight.core.exceptions.ProjectSynchronizationException: Runtime synchronization failed
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:342)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)
    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)

    *** ***

Caused by: OutOfSyncException [receivedTransactionDetails=com.worklight.common.type.TransactionDetails{currentTransactionId=1437028119196, previousTransactionId=1437028118819 is dbMaster=false, lastTransactionID=1437028118819]
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:213)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    ... 42 more

Jul 16, 2015 2:28:39 PM com.ibm.worklight.admin.jmx.JMXCommunicationUtil logOperationResult
SEVERE: Result: worklight: null///192.168.135.4: Runtime synchronization failed
Jul 16, 2015 2:28:49 PM com.worklight.common.util.jmx.RuntimeMBeanHandler getRMIConnection
INFO: Establishing RMI connection on localhost with port number 8686

日志文件:localhost.2015-07-16.log

Jul 16, 2015 10:02:38 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [ManagementServlet] in context with path [/wladmin] threw exception
<openjpa-1.2.2-r422266:898935 fatal store error> org.apache.openjpa.persistence.RollbackException: The last packet successfully received from the server was 85,896,513 milliseconds ago.  The last packet sent successfully to the server was 85,896,513 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:523)
    at com.ibm.worklight.admin.services.BaseService.auditStart(BaseService.java:719)
    at com.ibm.worklight.admin.services.BaseService.auditStart(BaseService.java:684)
    at com.ibm.worklight.admin.services.BaseService.auditStart(BaseService.java:661)
    at com.ibm.worklight.admin.services.ManagementService.loginAudit(ManagementService.java:132)

    *** ***

    at java.lang.Thread.run(Thread.java:745)
Caused by: <openjpa-1.2.2-r422266:898935 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: The last packet successfully received from the server was 85,896,513 milliseconds ago.  The last packet sent successfully to the server was 85,896,513 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4246)
    at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4211)
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
    at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:934)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.retainConnection(JDBCStoreManager.java:216)
    at org.apache.openjpa.kernel.DelegatingStoreManager.retainConnection(DelegatingStoreManager.java:163)
    at org.apache.openjpa.kernel.BrokerImpl.retainConnection(BrokerImpl.java:3734)
    at org.apache.openjpa.kernel.BrokerImpl.beginStoreManagerTransaction(BrokerImpl.java:1302)
    at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1987)
    at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1927)
    at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1845)
    at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
    at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1369)
    at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:877)
    at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:512)
    ... 79 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 85,896,513 milliseconds ago.  The last packet sent successfully to the server was 85,896,513 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    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:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3317)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1941)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2690)
    at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5093)
    at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:371)
    at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:328)
    at org.apache.openjpa.lib.jdbc.DelegatingConnection.setAutoCommit(DelegatingConnection.java:198)
    at org.apache.openjpa.lib.jdbc.DelegatingConnection.setAutoCommit(DelegatingConnection.java:198)
    at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.setAutoCommit(ConfiguringConnectionDecorator.java:117)
    at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.<init>(ConfiguringConnectionDecorator.java:111)
    at org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator.decorate(ConfiguringConnectionDecorator.java:93)
    at org.apache.openjpa.lib.jdbc.DecoratingDataSource.decorate(DecoratingDataSource.java:100)
    at org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:88)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:945)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:930)
    ... 90 more
Caused by: java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3298)
    ... 105 more

Jul 16, 2015 2:28:47 PM org.apache.catalina.authenticator.SingleSignOn expire
WARNING: SSO unable to expire session [Host: [localhost], Context: [/worklightconsole], SessionID: [1690FBC4A81ABB560ECC9203CC2CC8D2]] because the Session could not be found
Jul 16, 2015 2:31:35 PM org.apache.catalina.authenticator.SingleSignOn expire
WARNING: SSO unable to expire session [Host: [localhost], Context: [/worklightconsole], SessionID: [185C6AA9E08F71E4A4F16E689D0FD426]] because the Session could not be found
Jul 16, 2015 2:32:09 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [GadgetAPIServlet] in context with path [/worklight] threw exception [OutOfSyncException [receivedTransactionDetails=com.worklight.common.type.TransactionDetails{currentTransactionId=1437028119196, previousTransactionId=1437028118819 is dbMaster=false, lastTransactionID=1437028118819]] with root cause
OutOfSyncException [receivedTransactionDetails=com.worklight.common.type.TransactionDetails{currentTransactionId=1437028119196, previousTransactionId=1437028118819 is dbMaster=false, lastTransactionID=1437028118819]
    at com.worklight.twopc.runtime.RuntimeTransactionHandler.commit(RuntimeTransactionHandler.java:213)
    at com.worklight.core.jmx.ProjectSynchronizationBean.sync(ProjectSynchronizationBean.java:265)
    at com.worklight.core.jmx.ProjectManagementMXBeanImpl.sync(ProjectManagementMXBeanImpl.java:1045)

    *** ***

【问题讨论】:

    标签: tomcat ibm-mobilefirst mobilefirst-server


    【解决方案1】:

    它与 MySQL 陈旧连接的处理有关。 MySQL 数据库在连接上一段时间不活动后关闭其连接。此超时由名为 wait_timeout 的系统变量定义。默认值为 28000 秒(8 小时)。

    为避免这种行为,请查看: https://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.installconfig.doc/install_config/c_handling_stale_mysql_connections.html?lang=en

    【讨论】:

    • 嗨,布鲁诺,我在 WAS ND 8.5.5.6 完整配置文件中遇到了同样的错误。请让我知道所需的任何修复或设置。
    • 上面的链接也描述了 WAS 的过程
    • 感谢布鲁诺。由于 Java 堆大小,我收到此错误。控制台中部署的一个 Android WLAPP 文件很大,并且在最小更新后重新启动无法加载该文件,这会导致错误“运行时同步失败”。一旦增加 Java 堆大小并重新启动服务器,它就可以正常工作了。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2015-12-14
    • 2020-10-31
    • 2020-11-18
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多