You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Eric Bléher (Jira)" <ji...@apache.org> on 2020/04/14 18:53:00 UTC
[jira] [Updated] (THRIFT-5172) NetStd TBaseClient open output
transport multiple times
[ https://issues.apache.org/jira/browse/THRIFT-5172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Bléher updated THRIFT-5172:
--------------------------------
Description:
When I have some network issues to connect to my Thrift server, it tries many attempts to connect to it. -After a while, I get a "OutOfMemory" Exception. EDIT: unrelated to this issue.-
I read that it may be related to too many sockets opened.
Looking quickly at the code in .NET Standard:
TBaseClient
public virtual async Task OpenTransportAsync(CancellationToken cancellationToken)
{
if (!_inputProtocol.Transport.IsOpen)
{ await _inputProtocol.Transport.OpenAsync(cancellationToken); }
if (!*_inputProtocol*.Transport.IsOpen)
{ await _outputProtocol.Transport.OpenAsync(cancellationToken); }
}
This last check seems a bad copy/paste and should probably be
if (!*_outputProtocol*.Transport.IsOpen)
Otherwise, we indeed get the transport on the output protocol getting opened many times!
I just proposed a pull request with the fix.
was:
When I have some network issues to connect to my Thrift server, it tries many attempts to connect to it. After a while, I get a "OutOfMemory" Exception.
I read that it may be related to too many sockets opened.
Looking quickly at the code in .NET Standard:
TBaseClient
public virtual async Task OpenTransportAsync(CancellationToken cancellationToken)
{
if (!_inputProtocol.Transport.IsOpen)
{ await _inputProtocol.Transport.OpenAsync(cancellationToken); }
if (!*_inputProtocol*.Transport.IsOpen)
{ await _outputProtocol.Transport.OpenAsync(cancellationToken); }
}
This last check seems a bad copy/paste and should probably be
if (!*_outputProtocol*.Transport.IsOpen)
Otherwise, we indeed get the transport on the output protocol getting opened many times!
I just proposed a pull request with the fix.
Summary: NetStd TBaseClient open output transport multiple times (was: NetStd OutOfMemoryException)
> NetStd TBaseClient open output transport multiple times
> -------------------------------------------------------
>
> Key: THRIFT-5172
> URL: https://issues.apache.org/jira/browse/THRIFT-5172
> Project: Thrift
> Issue Type: Bug
> Components: netstd - Library
> Affects Versions: 0.13.0
> Reporter: Eric Bléher
> Assignee: Eric Bléher
> Priority: Major
> Labels: patch
> Fix For: 0.14.0
>
> Original Estimate: 5m
> Remaining Estimate: 5m
>
> When I have some network issues to connect to my Thrift server, it tries many attempts to connect to it. -After a while, I get a "OutOfMemory" Exception. EDIT: unrelated to this issue.-
> I read that it may be related to too many sockets opened.
> Looking quickly at the code in .NET Standard:
> TBaseClient
> public virtual async Task OpenTransportAsync(CancellationToken cancellationToken)
> {
> if (!_inputProtocol.Transport.IsOpen)
> { await _inputProtocol.Transport.OpenAsync(cancellationToken); }
> if (!*_inputProtocol*.Transport.IsOpen)
> { await _outputProtocol.Transport.OpenAsync(cancellationToken); }
> }
>
>
> This last check seems a bad copy/paste and should probably be
> if (!*_outputProtocol*.Transport.IsOpen)
> Otherwise, we indeed get the transport on the output protocol getting opened many times!
>
> I just proposed a pull request with the fix.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)