简体   繁体   English

Mirth Connect发送方通道目标数据库编写器无法更新数据库中的记录

[英]Mirth Connect Sender Channel Destination Database writer unable to update the record in DB

I have a strange problem with Mirth Connect Sender Channel. 我与Mirth Connect发送者频道有一个奇怪的问题。

Everything is working fine and tested in testing environment and when I deployed the sender channel in live strange problem arises. 一切工作正常,并在测试环境中进行了测试,当我在实时部署发件人通道时,出现了奇怪的问题。

Data is processed successfully in Source Transformer and it is sent to destination and LLP Sender sent the message successfully to the receiver. 数据已在Source Transformer中成功处理,并将其发送到目标,LLP Sender将消息成功发送到了接收器。

At Database Writer step, I am getting the below error 在数据库编写器步骤中,出现以下错误

[2013-02-18 09:02:29,981]  ERROR (org.mule.impl.DefaultComponentExceptionStrategy:95): Caught exception in Exception Strategy for: d3b08b4e-baf1-4462-b2cc-ad36acafdcde: java.sql.SQLException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)

at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)

at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)

at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:596)

at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:132)

at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:160)

at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:164)

at org.mule.impl.MuleSession.sendEvent(MuleSession.java:191)

at org.mule.impl.MuleSession.sendEvent(MuleSession.java:130)

at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:85)

at org.mule.routing.outbound.FilteringMulticastingRouter.route(FilteringMulticastingRouter.java:61)

at org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:78)

at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:48)

at org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:82)

at org.mule.impl.model.DefaultMuleProxy.onCall(DefaultMuleProxy.java:247)

at org.mule.impl.model.seda.SedaComponent.doSend(SedaComponent.java:209)

at org.mule.impl.model.AbstractComponent.sendEvent(AbstractComponent.java:277)

at org.mule.impl.MuleSession.sendEvent(MuleSession.java:201)

at org.mule.routing.inbound.InboundMessageRouter.send(InboundMessageRouter.java:176)

at org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:143)

at org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:487)

at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:266)

at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:229)

at com.mirth.connect.connectors.jdbc.JdbcMessageReceiver.processMessage(JdbcMessageReceiver.java:179)

at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.doInTransaction(TransactedPollingMessageReceiver.java:159)

at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:72)

at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.run(TransactedPollingMessageReceiver.java:149)

at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)

at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)

at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)

at java.lang.Thread.run(Thread.java:662)


** END NESTED EXCEPTION **



Last packet sent to the server was 1 ms ago. Query: UPDATE hl7worklist SET status = ? WHERE id = ?;
 Parameters: [2.0, 12596]
    java.sql.SQLException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketExceptionMESSAGE: Broken pipeSTACKTRACE:java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
    at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:596)
    at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:132)
    at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:160)
    at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:164)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:191)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:130)
    at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:85)
    at org.mule.routing.outbound.FilteringMulticastingRouter.route(FilteringMulticastingRouter.java:61)
    at org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:78)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:48)
    at org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:82)
    at org.mule.impl.model.DefaultMuleProxy.onCall(DefaultMuleProxy.java:247)
    at org.mule.impl.model.seda.SedaComponent.doSend(SedaComponent.java:209)
    at org.mule.impl.model.AbstractComponent.sendEvent(AbstractComponent.java:277)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:201)
    at org.mule.routing.inbound.InboundMessageRouter.send(InboundMessageRouter.java:176)
    at org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:143)
    at org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:487)
    at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:266)
    at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:229)
    at com.mirth.connect.connectors.jdbc.JdbcMessageReceiver.processMessage(JdbcMessageReceiver.java:179)
    at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.doInTransaction(TransactedPollingMessageReceiver.java:159)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:72)
    at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.run(TransactedPollingMessageReceiver.java:149)
    at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
    at java.lang.Thread.run(Thread.java:662)** END NESTED EXCEPTION **Last packet sent to the server was 1 ms ago. Query: UPDATE hl7worklist SET status = ? WHERE id = ?; Parameters: [2.0, 12596]
    at org.apache.commons.dbutils.QueryRunner.rethrow(QueryRunner.java:542)
    at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:599)
    at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doDispatch(JdbcMessageDispatcher.java:132)
    at com.mirth.connect.connectors.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:160)
    at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:164)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:191)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:130)
    at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:85)
    at org.mule.routing.outbound.FilteringMulticastingRouter.route(FilteringMulticastingRouter.java:61)
    at org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:78)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:48)
    at org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:82)
    at org.mule.impl.model.DefaultMuleProxy.onCall(DefaultMuleProxy.java:247)
    at org.mule.impl.model.seda.SedaComponent.doSend(SedaComponent.java:209)
    at org.mule.impl.model.AbstractComponent.sendEvent(AbstractComponent.java:277)
    at org.mule.impl.MuleSession.sendEvent(MuleSession.java:201)
    at org.mule.routing.inbound.InboundMessageRouter.send(InboundMessageRouter.java:176)
    at org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:143)
    at org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:487)
    at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:266)
    at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:229)
    at com.mirth.connect.connectors.jdbc.JdbcMessageReceiver.processMessage(JdbcMessageReceiver.java:179)
    at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.doInTransaction(TransactedPollingMessageReceiver.java:159)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:72)
    at org.mule.providers.TransactedPollingMessageReceiver$MessageProcessorWorker.run(TransactedPollingMessageReceiver.java:149)
    at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
    at java.lang.Thread.run(Thread.java:662)

"Broken pipe" means problems with the connection to the server. “管道断开”表示与服务器的连接有问题。 Check that. 检查一下。

"Communications link failure..." is quite a general type of message. “通信链接失败...”是相当普通的消息类型。

The times that I encountered this error had to do with the fact the database server had been running for too long (+500 days or something...). 我遇到此错误的时间与数据库服务器运行时间过长(+500天左右)有关。 Simply rebooting the Windows Server solved the problem. 只需重新启动Windows Server即可解决此问题。

At that time it was related to a bug in the TCP/IP stack in Windows Server (2003/2008 Server), which occurs when a server has been up for too long, it cannot create new connections anymore. 当时,它与Windows Server(2003/2008 Server)中TCP / IP堆栈中的错误有关,该错误在服务器启动时间过长时发生,无法再创建新连接。 I think a has been solved in a patch in Windwows. 我认为Windwows中的一个补丁已解决。 The newer Windows Server editions won't have this bug either. 较新的Windows Server版本也不会出现此错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM