Skip to content

SO_TIMEOUT is not honored #852

@fengxx

Description

@fengxx

I had configured socket read timeout by "JerseyDockerCmdExecFactory().withReadTimeout" method like

JerseyDockerCmdExecFactory().withReadTimeout(180000)
                .withConnectionRequestTimeout(180000)
                .withConnectTimeout(120000)

But some ops didn't respect the timeout and caused thread hang

"dockerjava-jaxrs-async-230" #51362 daemon prio=5 os_prio=0 tid=0x00007efc700c7000 nid=0x15fa runnable [0x00007efd84490000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
        at sun.security.ssl.InputRecord.read(InputRecord.java:503)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
        - locked <0x000000049d2d9268> (a java.lang.Object)
        at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930)
        at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
        - locked <0x000000049d2d9328> (a sun.security.ssl.AppInputStream)
        at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
        at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
        at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:282)
        at org.apache.http.impl.io.ChunkedInputStream.getChunkSize(ChunkedInputStream.java:265)
        at org.apache.http.impl.io.ChunkedInputStream.nextChunk(ChunkedInputStream.java:226)
        at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:185)
        at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        - locked <0x000000049d2d93e0> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:133)
        at java.io.FilterInputStream.read(FilterInputStream.java:133)
        at org.glassfish.jersey.message.internal.EntityInputStream.read(EntityInputStream.java:102)
        at com.github.dockerjava.jaxrs.util.WrappedResponseInputStream.read(WrappedResponseInputStream.java:44)
        at com.github.dockerjava.core.command.FrameReader.readFrame(FrameReader.java:64)
        at com.github.dockerjava.core.async.FrameStreamProcessor.processResponseStream(FrameStreamProcessor.java:35)
        at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:66)
        at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:74

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions