You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King, III (JIRA)" <ji...@apache.org> on 2015/04/02 23:38:53 UTC

[jira] [Updated] (THRIFT-2441) Cannot shutdown TThreadedServer when clients are still connected

     [ https://issues.apache.org/jira/browse/THRIFT-2441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James E. King, III updated THRIFT-2441:
---------------------------------------
    Attachment: THRIFT-2441-prelim.patch

I have attached a preview patch (not complete - for example no specific tests for disabling the new functionality, but passes build and test).  It may not apply cleanly to 0.9.2 or thrift:master as this patch was made on top of some other patches on the machine I generated it on, but this should be enough for an early preview to ensure all are happy with the direction.

Key difference from the discussion is that there is no interruptServerAndChildren() call, but instead there is an interruptChildren() call, and the TServer implementations stop() methods call interrupt() then interruptChildren().  If a TServerTransport doesn't support interruptChildren() then it will behave the way it used to.

I am also planning on taking the three per-client processing loops found in TSimpleServer, TThreadedServer, and TThreadPoolServer and consolidating the common code there (by adding a TConnectedClient class).  This would have simplified maintenance I needed to do on the three TServers, and will bring consistency to the exception handling among them.  This will be in the next patch / pull request.

> Cannot shutdown TThreadedServer when clients are still connected
> ----------------------------------------------------------------
>
>                 Key: THRIFT-2441
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2441
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9.1
>            Reporter: Chris Stylianou
>            Assignee: Ben Craig
>         Attachments: THRIFT-2441-prelim.patch
>
>
> When calling stop() on the TThreadedServer no interrupts are sent to the client threads. This means the stop() call blocks on tasksMonitor.wait() until all client naturally disconnect.
> How can we tell the client thread connections to close/exit during the TThreadedServer::stop() call?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)