[
https://issues.apache.org/jira/browse/THRIFT-4252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16963416#comment-16963416
]
Jens Geyer commented on THRIFT-4252:
------------------------------------
[~emmenlau] we have a pull request for this, would you mind revieweing it?
> Cannot shutdown Java server when clients are still connected
> ------------------------------------------------------------
>
> Key: THRIFT-4252
> URL: https://issues.apache.org/jira/browse/THRIFT-4252
> Project: Thrift
> Issue Type: Bug
> Components: Java - Library
> Affects Versions: 0.10.0
> Reporter: Mario Emmenlauer
> Assignee: Qinghui Xu
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> I found issue https://issues.apache.org/jira/browse/THRIFT-2441 and I believe
> that the same problem still exists in the Java servers, and I'm affected by
> it. Short summary: I can not shut down the Java server (neither TSimpleServer
> nor TThreadedServer) while clients are still connected. That is pretty bad,
> because essentially the clients are not under by control, but they can
> essentially "block" server maintenance operations by blocking the shutdown.
> *In more detail:* I have a Java TSimpleServer runnable in a thread running.
> The main thread eventually asks the server to stop(). But they seem to ignore
> the request. I checked the code of TSimpleServer.java and I'm under the
> impression that the innermost loop the server does not poll the variable
> stopped_ or does it? Looking at
> https://github.com/apache/thrift/blob/master/lib/java/src/org/apache/thrift/server/TSimpleServer.java
> from line 76:
> {code}
> while (true) {
> if (eventHandler_ != null) {
> eventHandler_.processContext(connectionContext, inputTransport,
> outputTransport);
> }
> if(!processor.process(inputProtocol, outputProtocol)) {
> break;
> }
> }
> {code}
> I found that this loop is only interrupted if the client disconnects. I tried
> changing {{while(true)}} for {{while(!stopped_)}} but that did not help. I
> guess that one of the methods in the loop must be blocking.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)