thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gianni Ambrosio <gianni.ambro...@vi-grade.com>
Subject Re: Unable to stop socket server while there are connected clients
Date Tue, 27 Feb 2018 16:06:00 GMT
Hi All,
I realized the previous link (THRIFT-2696) was related to Delphi 
(gosh!). C++ implementation had the same problem but seems to be already 
fixed:

https://github.com/apache/thrift/commit/1684c429501e9df9387cb518e660691f032d7926#diff-73a64b6e865fd1b207b30764b9e06033

Is it possible to open a ticket for C# too?

Regards,
Gianni

On 27/02/2018 14:09, Gianni Ambrosio wrote:
> Hi All,
> I was experiencing exacly the same problem reported here with Thrift 
> 0.9.1:
> https://issues.apache.org/jira/browse/THRIFT-2696
>
>  So I moved to the latest thrift version (i.e. 0.11.0) but the problem 
> is still there!
>
> I implemented a thrift server with TSimpleServer in C#:
>
> public class ThriftServer
> {
>    public void start(){
>       Service.Processor processor = new 
> Service.Processor(serviceHandler);
>       TServerSocket serverTransport = new 
> TServerSocket(ServiceConstants.ServicePort);
>       server = new TSimpleServer(processor, serverTransport);
>       workerThread = new Thread(new ThreadStart(run));
>       workerThread.Start();
>    }
>    private void run(){
>       server.Serve();
>    }
>    public void stop(){
>       server.Stop();
>    }
> }
>
> And here is the C++ client implementation:
>
> void ThriftClient::connect(const std::string& serverIp) {
> boost::shared_ptr<apache::thrift::transport::TTransport> socket(new 
> apache::thrift::transport::TSocket(serverIp.c_str(), 
> g_Service_constants.ServicePort));
>    transport = 
> boost::make_shared<apache::thrift::transport::TBufferedTransport>(socket);
>    transport->open();
>    client = 
> boost::make_shared<ServiceClient>(boost::make_shared<apache::thrift::protocol::TBinaryProtocol>(transport));
> }
>
> The problem is that when I close the C# application the application 
> does not close. But in that state it closes as soon as I close the C++ 
> client application.
> Debugging the C# application, server.Stop() is called but 
> server.Serve() call does not exit unless the client has been 
> disconnected.
> Since the above thrift ticket seems reporting exactly the same issue 
> and it should be fixed in thrift 0.9.2, what's wrong in my code?
>
> Best regards,
> Gianni
>


Mime
View raw message