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]