galasa-dev / projectmanagement

Project Management repo for Issues and ZenHub
7 stars 3 forks source link

DockerManager: SocketTimeoutException during docker exec for long running commands #1984

Open haripra86 opened 1 week ago

haripra86 commented 1 week ago

While running long running commands (shell script) using docker exec , sometimes we see SocketTimeoutException. This is more prominent when docker deamon is running on a selerate machine and there will be some delay in reading inputstream buffer by docker manager.

2024/09/04 19:06:13 JVM output: (runid:L1) : 04/09/2024 19:06:13.669 ERROR d.g.d.i.DockerExecImpl - Failure during exec running java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?] at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) ~[?:?] at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?] at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?] at java.io.BufferedInputStream.fill(BufferedInputStream.java:252) ~[?:?] at java.io.BufferedInputStream.read1(BufferedInputStream.java:292) ~[?:?] at java.io.BufferedInputStream.read(BufferedInputStream.java:351) ~[?:?] at java.io.FilterInputStream.read(FilterInputStream.java:133) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3542) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3535) ~[?:?] at dev.galasa.docker.internal.DockerExecImpl$ExecThread.run(DockerExecImpl.java:203) [-1725456941743:?]

haripra86 commented 1 week ago

Ideally increasing connection timeout should resolve the issue. Alternatively we can pass connection timeout as parameter to DockerExecImpl constructure. I will try to put a PR soon for the same.