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

James E. King, III updated THRIFT-4515:
---------------------------------------
    Description: 
The cross test suite kills the server process after the client is done, see 
test/crosstest/run.py:_scoped, the process is killed. This means that we don't 
ever test teardown in any language in our cross tests.  Further, in some 
servers like the C++ TestServer, code at the end of main it sits in a TIGHT 
while loop unnecessarily causing CPU usage and slowing down the system.

There should be a signal (like SIGINT) that each server waits for, and on 
receiving that signal stops the thrift server cleanly.  This ensures we 
properly test teardown.
h4. Design

There is a new property in the tests.json file under server called 
"stop_signal".  If defined, the server understands how to stop when given this 
signal.  The cross test suite honors this.  Currently the cpp, d, and perl 
servers handle it properly.

When a server handles this signal, if the server dies unexpectedly or fails to 
stop that is considered an error.  The old behavior is applied to any legacy 
server which doesn't understand how to use a signal to stop.  In that case the 
server is killed with SIGKILL (unconditionally) and any result is ignored.

All test servers should be updated to support this new mechanism as soon as 
possible so that we improve test coverage of server stop / teardown code.

  was:
The cross test suite kills the server process after the client is done, see 
test/crosstest/run.py:_scoped, the process is killed. In the C++ TestServer 
code at the end of main it sits in a TIGHT while loop unnecessarily causing CPU 
usage and slowing down the system.

There should be a signal (like SIGINT) that each server waits for, and on 
receiving that signal stops the thrift server cleanly.  This ensures we 
properly test teardown.


> Gracefully shutdown cross-test servers to fully test teardown
> -------------------------------------------------------------
>
>                 Key: THRIFT-4515
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4515
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Test Suite
>    Affects Versions: 0.11.0
>            Reporter: James E. King, III
>            Assignee: James E. King, III
>            Priority: Major
>
> The cross test suite kills the server process after the client is done, see 
> test/crosstest/run.py:_scoped, the process is killed. This means that we 
> don't ever test teardown in any language in our cross tests.  Further, in 
> some servers like the C++ TestServer, code at the end of main it sits in a 
> TIGHT while loop unnecessarily causing CPU usage and slowing down the system.
> There should be a signal (like SIGINT) that each server waits for, and on 
> receiving that signal stops the thrift server cleanly.  This ensures we 
> properly test teardown.
> h4. Design
> There is a new property in the tests.json file under server called 
> "stop_signal".  If defined, the server understands how to stop when given 
> this signal.  The cross test suite honors this.  Currently the cpp, d, and 
> perl servers handle it properly.
> When a server handles this signal, if the server dies unexpectedly or fails 
> to stop that is considered an error.  The old behavior is applied to any 
> legacy server which doesn't understand how to use a signal to stop.  In that 
> case the server is killed with SIGKILL (unconditionally) and any result is 
> ignored.
> All test servers should be updated to support this new mechanism as soon as 
> possible so that we improve test coverage of server stop / teardown code.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to