Persistent TCP from 2.8 publisher to 3.2 Data Source: Broken pipe (Write failed)
-
Having upgraded the receiver, I'm now seeing the following errors on publishers which have not yet been upgraded:
Persistent TCP: Broken pipe (Write failed)
Is Persistent TCP version dependent? Should it fail, or should it continue working between different versions?
-
It is dependent, but it's always reverse compatible. Meaning, a 3.2 TCP Receiver can receive from a 2.8 publisher. Sometimes this broken pipe error is caused by a validation issue, where a point on the sending end may have some conflict or invalid state to the receiving end. One end probably logged an error message, I would think.
-
Here is the log from a 2.8 publisher:
DEBUG 2017-12-11 15:13:17,540 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 1 DEBUG 2017-12-11 15:13:17,541 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 0 DEBUG 2017-12-11 15:13:17,541 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:488) - Publish queue size: 0 DEBUG 2017-12-11 15:13:20,177 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 7 DEBUG 2017-12-11 15:13:20,177 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 6 DEBUG 2017-12-11 15:13:20,177 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 2 DEBUG 2017-12-11 15:13:20,178 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 3 DEBUG 2017-12-11 15:13:20,178 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 4 DEBUG 2017-12-11 15:13:20,178 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 5 DEBUG 2017-12-11 15:13:20,178 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:488) - Publish queue size: 0 DEBUG 2017-12-11 15:13:22,165 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 1 DEBUG 2017-12-11 15:13:22,165 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:452) - Sending datapoint with index: 0 DEBUG 2017-12-11 15:13:22,165 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.sendRealTime:488) - Publish queue size: 0 DEBUG 2017-12-11 15:13:22,186 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.closeConnection:661) - Sending close packet WARN 2017-12-11 15:13:22,187 (com.serotonin.m2m2.persistent.pub.PersistentSendThread.closeConnection:669) - Failed closing SendThread socket. java.net.SocketException: Broken pipe (Write failed) at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) at java.net.SocketOutputStream.write(SocketOutputStream.java:132) at com.serotonin.m2m2.persistent.pub.TimedOutputStream.write(TimedOutputStream.java:47) at com.serotonin.m2m2.persistent.common.Packet.writeHeader(Packet.java:322) at com.serotonin.m2m2.persistent.common.Packet.writePacket(Packet.java:280) at com.serotonin.m2m2.persistent.pub.PersistentSendThread.closeConnection(PersistentSendThread.java:663) at com.serotonin.m2m2.persistent.pub.PersistentSendThread.runImpl(PersistentSendThread.java:267) at com.serotonin.m2m2.rt.publish.SendThread.run(SendThread.java:56)
And the Data Source/Listener (3.2)
DEBUG 2017-12-11 15:19:17,503 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl:557) - /166.176.184.183:4865: ensuring point 105DP_temp, index: 8 DEBUG 2017-12-11 15:19:17,503 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.ensurePointV5:809) - /166.176.184.183:4865: ensuring point 105DP_temp DEBUG 2017-12-11 15:19:17,504 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.ensurePointV5:817) - /166.176.184.183:4865: point 105DP_temp already exists in RT list DEBUG 2017-12-11 15:19:17,504 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.updatePointV5:882) - /166.176.184.183:4865: saving point 105DP_temp updates DEBUG 2017-12-11 15:19:17,625 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl:567) - /166.176.184.183:4865: confirmed 105DP_temp with client INFO 2017-12-11 15:19:17,625 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl:579) - /166.176.184.183:4865: point init done INFO 2017-12-11 15:19:17,700 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT.run:357) - Received socket from /166.176.184.169:12742 DEBUG 2017-12-11 15:19:17,768 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl:504) - /166.176.184.169:12742: client requested version 8 DEBUG 2017-12-11 15:19:17,768 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl:512) - /166.176.184.169:12742: using version 8 DEBUG 2017-12-11 15:19:17,865 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.updatePointHierarchy:960) - /166.176.184.183:4865: updatePointHierarchy DEBUG 2017-12-11 15:19:17,874 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.updatePointHierarchy:967) - /166.176.184.183:4865: updatePointHierarchy: count=8 WARN 2017-12-11 15:19:17,874 (com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.run:466) - /166.176.184.183:4865: Connection handler exception java.lang.NullPointerException at com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.updatePointHierarchy(PersistentDataSourceRT.java:977) at com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.runImpl(PersistentDataSourceRT.java:711) at com.serotonin.m2m2.persistent.ds.PersistentDataSourceRT$TcpConnectionHandler.run(PersistentDataSourceRT.java:436) at java.lang.Thread.run(Thread.java:748)
-
If you save your Persistent Data source again, it might resolve. Can you share the JSON for the data source (perhaps without its auth key)?
-
Wish all problems in life were that easy. ;-)
Saving it was all it took. Things are back to normal, now.
Thanks!
-
Yeah, sorry, that was a bug. Got the fix in, though.