Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connection reset by peer: socket write error #365

Open
cliviu opened this issue Jul 19, 2018 · 12 comments
Open

Connection reset by peer: socket write error #365

cliviu opened this issue Jul 19, 2018 · 12 comments

Comments

@cliviu
Copy link

cliviu commented Jul 19, 2018

After some session inactivity time (about 15 minutes), I got these stack traces in log. What can I do to avoid them ?

2018-07-19 10:09:02,647|PacketReader |INFO |PacketReader error, got exception.
com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Connection reset
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.doRead(DirectTcpPacketReader.java:53)
at com.hierynomus.smbj.transport.PacketReader.readPacket(PacketReader.java:69)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:47)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.readFully(DirectTcpPacketReader.java:70)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.readTcpHeader(DirectTcpPacketReader.java:59)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.doRead(DirectTcpPacketReader.java:48)
... 3 more

2018-07-19 10:09:02,660|Session |ERROR|Caught exception while closing TreeConnect with id: 1
com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Connection reset by peer: socket write error
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:77)
at com.hierynomus.smbj.connection.Connection.send(Connection.java:265)
at com.hierynomus.smbj.session.Session.send(Session.java:262)
at com.hierynomus.smbj.share.TreeConnect.close(TreeConnect.java:65)
at com.hierynomus.smbj.share.Share.close(Share.java:91)
at com.hierynomus.smbj.session.Session.logoff(Session.java:211)
at com.hierynomus.smbj.session.Session.close(Session.java:244)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:136)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:121)
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:428)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:53)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:74)
... 11 more
2018-07-19 10:09:02,660|Connection |WARN |Exception while closing session 1271036582559821
com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Connection reset by peer: socket write error
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:77)
at com.hierynomus.smbj.connection.Connection.send(Connection.java:265)
at com.hierynomus.smbj.session.Session.send(Session.java:262)
at com.hierynomus.smbj.session.Session.logoff(Session.java:217)
at com.hierynomus.smbj.session.Session.close(Session.java:244)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:136)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:121)
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:428)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:53)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:74)
... 9 more

@neoxpert
Copy link

As far as I know - at least on windows based shares - there is a 15 minutes auto disconnect timeout for idle connections. To prevent the server to close your connection you could try to send keep alive (or echo) requests.

This should be possible by using SMB2Echo packets, which are already implemented in smbj.

@cliviu
Copy link
Author

cliviu commented Jul 23, 2018

hi @neoxpert , do you know how to send SMB2Echo packets using the existing API ?

@neoxpert
Copy link

neoxpert commented Jul 23, 2018

Something like this should work, but I do not know if that is "the clean way".

SMB2Echo echo = new SMB2Echo(SMB2Dialect.SMB_2_0_2);

session.send(echo);

@hierynomus
Copy link
Owner

I'll add a keepalive mechanism that can be configured (on/off)

@cliviu
Copy link
Author

cliviu commented Jul 25, 2018

thanks !

@mtamassia
Copy link
Contributor

@hierynomus I think can easily send a PR for the Keepalive. Before I spend time on it, let me know if you have already done anything with it.

I was going to modify SMBConfig to allow for enabling/disabling keepalive with a default of disabled.
Then modify the AsyncDirectTcpTransport and DirectTcpTransport constructors to include boolean soKeepalive and use .setOption to enable/disable keepalive.

Please let me know if you agree with the approach and if I am missing anywhere else in the code where keepalive needs to be set.

@nddipiazza
Copy link
Contributor

@mtamassia @hierynomus did you work on this? we are getting bitten by this as well.

@dharmesh-khandelwal
Copy link

dharmesh-khandelwal commented Nov 8, 2019

Any updates on this issue? @hierynomus
Is there any keepalive mechanism?
What value should I give to timeouts that can be configured in SmbjConfig?

@Flemoz
Copy link

Flemoz commented Apr 29, 2020

So is this still in the works? @hierynomus

@SowjanyaKowkuntla
Copy link

@hierynomus Any updates on this issue , how to use keepalive mechanism, we are facing same issue.

@pts-aut
Copy link

pts-aut commented Feb 4, 2022

Anthing new on this ? we're facing the same issue:
[2022-02-04T07:17:29,616] ERROR session.Session - Caught exception while closing TreeConnect with id: 1
com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Broken pipe (Write failed)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:71) ~[smbj-0.3.0.jar:?]
at com.hierynomus.smbj.connection.Connection.send(Connection.java:240) ~[smbj-0.3.0.jar:?]
at com.hierynomus.smbj.session.Session.send(Session.java:208) ~[smbj-0.3.0.jar:?]
at com.hierynomus.smbj.share.TreeConnect.close(TreeConnect.java:61) ~[smbj-0.3.0.jar:?]
at com.hierynomus.smbj.share.Share.close(Share.java:90) ~[smbj-0.3.0.jar:?]
at com.hierynomus.smbj.session.Session.logoff(Session.java:157) [smbj-0.3.0.jar:?]
at com.hierynomus.smbj.session.Session.close(Session.java:190) [smbj-0.3.0.jar:?]
at com.hierynomus.smbj.connection.Connection.close(Connection.java:128) [smbj-0.3.0.jar:?]
at com.hierynomus.smbj.connection.Connection.close(Connection.java:113) [smbj-0.3.0.jar:?]
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:404) [smbj-0.3.0.jar:?]
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:53) [smbj-0.3.0.jar:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.net.SocketException: Broken pipe (Write failed)
at java.net.SocketOutputStream.socketWrite0(Native Method) ~[?:?]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110) ~[?:?]
at java.net.SocketOutputStream.write(SocketOutputStream.java:150) ~[?:?]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81) ~[?:?]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142) ~[?:?]
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:69) ~[smbj-0.3.0.jar:?]
... 11 more

@vjorge
Copy link

vjorge commented Mar 25, 2022

Hello,
Any updates on this issue? Facing the same problem :(.

Many thanks for the help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants