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