-
Notifications
You must be signed in to change notification settings - Fork 135
Problem with nested connections to a unix domain socket #146
Description
I use NG to traverse a tree where the recursion is implemented by invoking a wrapper script as a subprocess at each node of the tree. The wrapper script detects when it's launched from the command line and starts the NG server. Each nested invocation of the script then takes the other path and runs the NG client connecting back to the server for each of its children. My current traversal goes 4 deep.
Works fine with the server listening on TCP, but throws the exception below when using a unix domain socket. It does seem to be a timing issue as on a loaded machine the NG server might throw one or two exceptions per thousand nodes while on an otherwise idle machine I'll see ~50 per thousand.
I will work up an example I can share, but it will take me a while.
I've tried various combinations of:
RHEL 6/7
JDK 8/10
JNA 4.4.0/4.5.1
Jul 11, 2018 2:40:08 PM com.martiansoftware.nailgun.NGCommunicator lambda$startBackgroundReceive$1
WARNING: Nailgun client read future raised an exception
java.io.IOException: com.sun.jna.LastErrorException: [104] Connection reset by peer
at com.martiansoftware.nailgun.NGUnixDomainSocket$NGUnixDomainSocketInputStream.doRead(NGUnixDomainSocket.java:127)
at com.martiansoftware.nailgun.NGUnixDomainSocket$NGUnixDomainSocketInputStream.read(NGUnixDomainSocket.java:98)
at java.base/java.io.DataInputStream.readInt(DataInputStream.java:392)
at com.martiansoftware.nailgun.NGCommunicator.readChunkImpl(NGCommunicator.java:482)
at com.martiansoftware.nailgun.NGCommunicator.readChunk(NGCommunicator.java:465)
at com.martiansoftware.nailgun.NGCommunicator.lambda$null$0(NGCommunicator.java:191)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: com.sun.jna.LastErrorException: [104] Connection reset by peer
at com.martiansoftware.nailgun.NGUnixDomainSocketLibrary.read(Native Method)
at com.martiansoftware.nailgun.NGUnixDomainSocket$NGUnixDomainSocketInputStream.doRead(NGUnixDomainSocket.java:125)
... 9 more