micro-integrator
micro-integrator copied to clipboard
SMB2 inbound endpoint stops working after idle time
Description
SMB2 inbound endpoint stops working after 15 minutes when setting the polling interval to a value of more than 15 minutes.
Steps to Reproduce
- Get an updated MI 4.1.0 server( We tested the scenario in the latest update level 26).
- Deploy an Inbound Endpoint to poll files from an SMB location.
- After one poll, Wait for 15 minutes. You'll observe the below errors continuously.
[2022-12-21 12:32:00,599] ERROR {Promise} - << 1063 >> woke to: {} com.hierynomus.smbj.common.SMBRuntimeException: com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Connection reset
at com.hierynomus.smbj.common.SMBRuntimeException$1.wrap(SMBRuntimeException.java:28)
at com.hierynomus.smbj.common.SMBRuntimeException$1.wrap(SMBRuntimeException.java:22)
at com.hierynomus.protocol.commons.concurrent.Promise.deliverError(Promise.java:95)
at com.hierynomus.smbj.connection.OutstandingRequests.handleError(OutstandingRequests.java:88)
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:292)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:54)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: 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:70)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:48)
... 1 more
Caused by: java.net.SocketException: Connection reset
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
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
[2022-12-21 12:32:00,599] ERROR {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:78)
at com.hierynomus.smbj.connection.Connection.send(Connection.java:234)
at com.hierynomus.smbj.session.Session.send(Session.java:300)
at com.hierynomus.smbj.share.TreeConnect.close(TreeConnect.java:69)
at com.hierynomus.smbj.share.Share.close(Share.java:116)
at com.hierynomus.smbj.session.Session.logoff(Session.java:236)
at com.hierynomus.smbj.session.Session.close(Session.java:279)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:178)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:155)
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:294)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:54)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.net.SocketException: Broken pipe (Write failed)
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:75)
... 11 more
[2022-12-21 12:32:00,607] ERROR {Session} - Caught exception while closing TreeConnect with id: 5 com.hierynomus.protocol.transport.TransportException: java.net.SocketException: Broken pipe (Write failed)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:78)
at com.hierynomus.smbj.connection.Connection.send(Connection.java:234)
at com.hierynomus.smbj.session.Session.send(Session.java:300)
at com.hierynomus.smbj.share.TreeConnect.close(TreeConnect.java:69)
at com.hierynomus.smbj.share.Share.close(Share.java:116)
at com.hierynomus.smbj.session.Session.logoff(Session.java:236)
at com.hierynomus.smbj.session.Session.close(Session.java:279)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:178)
at com.hierynomus.smbj.connection.Connection.close(Connection.java:155)
at com.hierynomus.smbj.connection.Connection.handleError(Connection.java:294)
at com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:54)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.net.SocketException: Broken pipe (Write failed)
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
at java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
at com.hierynomus.smbj.transport.tcp.direct.DirectTcpTransport.write(DirectTcpTransport.java:75)
... 11 more
[2022-12-21 12:32:00,608] ERROR {FilePollingConsumer} - Error checking for existence and readability : smb2://ayeshd:***@192.168.102.6/test/IN org.apache.commons.vfs2.FileSystemException: Could not determine the type of file "smb2://ayeshd:Pwss5$Tp%[email protected]/test/IN".
at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1302)
at org.apache.commons.vfs2.provider.AbstractFileObject.exists(AbstractFileObject.java:900)
at org.wso2.carbon.inbound.endpoint.protocol.file.FilePollingConsumer.poll(FilePollingConsumer.java:187)
at org.wso2.carbon.inbound.endpoint.protocol.file.FilePollingConsumer.execute(FilePollingConsumer.java:151)
at org.wso2.carbon.inbound.endpoint.protocol.file.FileTask.taskExecute(FileTask.java:45)
at org.wso2.carbon.inbound.endpoint.common.InboundTask.execute(InboundTask.java:43)
at org.wso2.micro.integrator.mediation.ntask.NTaskAdapter.execute(NTaskAdapter.java:105)
at org.wso2.micro.integrator.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:63)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.commons.vfs2.FileSystemException: Unknown message with code "Could not get information for file: IN".
at org.apache.commons.vfs2.provider.smb2.Smb2ClientWrapper.getFileInfo(Smb2ClientWrapper.java:144)
at org.apache.commons.vfs2.provider.smb2.Smb2FileObject.getFileInfo(Smb2FileObject.java:112)
at org.apache.commons.vfs2.provider.smb2.Smb2FileObject.doGetType(Smb2FileObject.java:88)
at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1296)
... 13 more
[2022-12-21 12:32:00,945] ERROR {FilePollingConsumer} - Error checking for existence and readability : smb2://ayeshd:***@192.168.102.6/test/IN org.apache.commons.vfs2.FileSystemException: Could not determine the type of file "smb2://ayeshd:Pwss5$Tp%[email protected]/test/IN".
at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1302)
at org.apache.commons.vfs2.provider.AbstractFileObject.exists(AbstractFileObject.java:900)
at org.wso2.carbon.inbound.endpoint.protocol.file.FilePollingConsumer.poll(FilePollingConsumer.java:187)
at org.wso2.carbon.inbound.endpoint.protocol.file.FilePollingConsumer.execute(FilePollingConsumer.java:151)
at org.wso2.carbon.inbound.endpoint.protocol.file.FileTask.taskExecute(FileTask.java:45)
at org.wso2.carbon.inbound.endpoint.common.InboundTask.execute(InboundTask.java:43)
at org.wso2.micro.integrator.mediation.ntask.NTaskAdapter.execute(NTaskAdapter.java:105)
at org.wso2.micro.integrator.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:63)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.commons.vfs2.FileSystemException: Unknown message with code "Could not get information for file: IN".
at org.apache.commons.vfs2.provider.smb2.Smb2ClientWrapper.getFileInfo(Smb2ClientWrapper.java:144)
at org.apache.commons.vfs2.provider.smb2.Smb2FileObject.getFileInfo(Smb2FileObject.java:112)
at org.apache.commons.vfs2.provider.smb2.Smb2FileObject.doGetType(Smb2FileObject.java:88)
at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1296)
... 13 more
- We can see the same behavior after restarting the files server.
Affected Component
MI
Version
4.1.0