Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.
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.