[
https://issues.apache.org/jira/browse/THRIFT-5411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17357099#comment-17357099
]
Isha commented on THRIFT-5411:
------------------------------
To fix this issue, we are proposing below solution:
in class [TIOStreamTransport.java
|https://gerrit-epk.seli.gic.ericsson.se/c/luva/air/+/798093/1/3rd-thrift/src/org/apache/thrift/transport/TIOStreamTransport.java]::read(byte[]
buf, int off, int len) method, we can make below change (in red colour)
public int read(byte[] buf, int off, int len) throws TTransportException {
if (inputStream_ == null) {
throw new TTransportException(TTransportException.NOT_OPEN, "Cannot read from
null inputStream");
}
int bytesRead;
try {
bytesRead = inputStream_.read(buf, off, len);
}catch (IOException iox)
{
{color:#de350b}*if(iox instanceof SocketTimeoutException)*{color}
{color:#de350b} *{*{color}
{color:#de350b} *throw new TTransportException(TTransportException.TIMED_OUT,
iox);*{color}
{color:#de350b} *}*{color}
throw new TTransportException(TTransportException.UNKNOWN, iox);
}
This is the place from where exception in thrown. Since in above scenario, we
are getting SocketTimeoutException, but we are currently throwing it as an
unknown exception, thats why it is not ignored. We can change it to throw
timeout exception, so that it will be ignored.
Please check and let us know if it can be fixed in coming release of thrift.
Best Regards
Isha
> Catch SocketTimeoutException in TIOStreamTransport read
> --------------------------------------------------------
>
> Key: THRIFT-5411
> URL: https://issues.apache.org/jira/browse/THRIFT-5411
> Project: Thrift
> Issue Type: Bug
> Components: Java - Library
> Affects Versions: 0.14.1
> Reporter: Isha
> Assignee: David Mollitor
> Priority: Major
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> Hi,
> There is an issue in thrift library.
> From thrift version 0.12.0, we see some unwanted logs in our application logs
> as below:
> 1620367702942[20210507 11:38:22] [TThreadPoolServer$WorkerProcess::run] May
> 07, 2021 11:38:22 AM org.apache.thrift.server.TThreadPoolServer$WorkerProcess
> run
> SEVERE: Thrift Error occurred during processing of message.
> org.apache.thrift.transport.TTransportException:
> java.net.SocketTimeoutException: Read timed out
> at
> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:178)
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
> at
> org.apache.thrift.transport.layered.TFramedTransport.readFrame(TFramedTransport.java:138)
> at
> org.apache.thrift.transport.layered.TFramedTransport.read(TFramedTransport.java:106)
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
> at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
> at
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
> at java.net.SocketInputStream.read(SocketInputStream.java:171)
> at java.net.SocketInputStream.read(SocketInputStream.java:141)
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
> at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
> at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
> at
> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
> ... 12 more
> org.apache.thrift.transport.TTransportException:
> java.net.SocketTimeoutException: Read timed out
> at
> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:178)
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
> at
> org.apache.thrift.transport.layered.TFramedTransport.readFrame(TFramedTransport.java:138)
> at
> org.apache.thrift.transport.layered.TFramedTransport.read(TFramedTransport.java:106)
> at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
> at
> org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
> at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
> at
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.net.SocketTimeoutException: Read timed out
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
> at java.net.SocketInputStream.read(SocketInputStream.java:171)
> at java.net.SocketInputStream.read(SocketInputStream.java:141)
> at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
> at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
> at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
> at
> org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
> ... 12 more
>
> The exception is printed from TTheadPoolServer.java class as a non ignorable
> exception. But as per our analysis, the above exception is not creating any
> impact to us. And, it gets printed so many time in our application logs,
> which causes confusion to users.
> We have no control to avoid printing of this exception in our application.
> Please let me know if thrift can ignore this exception so that it will not be
> printed.
> If possible, please share the thrift version also, so that we can plan
> accordingly.
> Let me know if any further information is required.
> Best Regards
> Isha
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)