jiangqiushi opened a new issue #1855:
URL: https://github.com/apache/servicecomb-java-chassis/issues/1855


   **版本:**
   1.2.0.B006
   
   **背景:**
   服务端需要流式返回语音数据,代码如下
   ```java
   // 服务端入口
    public ResponseEntity<InputStream> doServerLogic(...) {
           PipedOutputStream out = new PipedOutputStream();
           PipedInputStream in = new PipedInputStream(out);
           // 写数据放到另一个线程
          WriteTask task = new WriteTask (out);
           ThreadPoolUtil.getPool().submit(task);
   }
   
   // WriteTask负责写数据,并最终关闭OutputStream
   @Override
   public void run() {
         try {
            // 写数据
            out.write(result);
            out.flush();
         } finally {
             out.close();
         }
   }
   ```
   **日志**
   ```xml
   2020-06-24 10:57:14.701 | WARN  | [vertx-blocked-thread-checker] | 
[BlockedThreadChecker] | Thread 
Thread[vert.x-worker-thread-15,5,main]=Thread[vert.x-worker-thread-15,5,main] 
has been blocked for 2408349 ms, time limit is 60000 ms
   io.vertx.core.VertxException: Thread blocked
           at java.lang.Object.wait(Native Method) ~[?:1.8.0_191]
           at java.io.PipedInputStream.read(PipedInputStream.java:326) 
~[?:1.8.0_191]
           at java.io.PipedInputStream.read(PipedInputStream.java:377) 
~[?:1.8.0_191]
           at java.io.InputStream.read(InputStream.java:101) ~[?:1.8.0_191]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream$ReadResult.doRead(InputStreamToReadStream.java:106)
 ~[foundation-vertx-1.2.0.B017.jar:1.2.0.B017]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream.readInWorker(InputStreamToReadStream.java:127)
 ~[foundation-vertx-1.2.0.B017.jar:1.2.0.B017]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream$$Lambda$497/1972510689.handle(Unknown
 Source) ~[?:?]
           at 
io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:316) 
~[vertx-core-3.8.3.jar:3.8.3]
           at io.vertx.core.impl.ContextImpl$$Lambda$499/1982215687.run(Unknown 
Source) ~[?:?]
           at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) 
~[vertx-core-3.8.3.jar:3.8.3]
           at io.vertx.core.impl.TaskQueue$$Lambda$80/2138560569.run(Unknown 
Source) ~[?:?]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_191]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_191]
           at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
           at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_191]
   2020-06-24 10:57:14.702 | WARN  | [vertx-blocked-thread-checker] | 
[BlockedThreadChecker] | Thread 
Thread[vert.x-worker-thread-8,5,main]=Thread[vert.x-worker-thread-8,5,main] has 
been blocked for 2389428 ms, time limit is 60000 ms
   io.vertx.core.VertxException: Thread blocked
           at java.lang.Object.wait(Native Method) ~[?:1.8.0_191]
           at java.io.PipedInputStream.read(PipedInputStream.java:326) 
~[?:1.8.0_191]
           at java.io.PipedInputStream.read(PipedInputStream.java:377) 
~[?:1.8.0_191]
           at java.io.InputStream.read(InputStream.java:101) ~[?:1.8.0_191]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream$ReadResult.doRead(InputStreamToReadStream.java:106)
 ~[foundation-vertx-1.2.0.B017.jar:1.2.0.B017]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream.readInWorker(InputStreamToReadStream.java:127)
 ~[foundation-vertx-1.2.0.B017.jar:1.2.0.B017]
           at 
org.apache.servicecomb.foundation.vertx.stream.InputStreamToReadStream$$Lambda$497/1972510689.handle(Unknown
 Source) ~[?:?]
           at 
io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:316) 
~[vertx-core-3.8.3.jar:3.8.3]
           at io.vertx.core.impl.ContextImpl$$Lambda$499/1982215687.run(Unknown 
Source) ~[?:?]
           at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76) 
~[vertx-core-3.8.3.jar:3.8.3]
           at io.vertx.core.impl.TaskQueue$$Lambda$80/2138560569.run(Unknown 
Source) ~[?:?]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_191]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_191]
           at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
           at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_191]
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to