[asterisk-dev] [Code Review] 4399: HTTP: Stop accepting requests on final system shutdown.

rmudgett reviewboard at asterisk.org
Wed Feb 11 11:28:27 CST 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4399/
-----------------------------------------------------------

(Updated Feb. 11, 2015, 11:28 a.m.)


Status
------

This change has been marked as submitted.


Review request for Asterisk Developers.


Changes
-------

Committed in revision 431692


Bugs: ASTERISK-24752
    https://issues.asterisk.org/jira/browse/ASTERISK-24752


Repository: Asterisk


Description
-------

There are three CLI commands to stop and restart Asterisk each.

1) core stop/restart now - Hangup all calls and stop or restart Asterisk.
New channels are prevented while the shutdown request is pending.

2) core stop/restart gracefully - Stop or restart Asterisk when there are
no calls remaining in the system.  New channels are prevented while the
shutdown request is pending.

3) core stop/restart when convenient - Stop or restart Asterisk when there
are no calls in the system.  New calls are not prevented while the
shutdown request is pending.

ARI has made stopping/restarting Asterisk more problematic.  While a
shutdown request is pending it is desirable to continue to process ARI
HTTP requests for current calls.  To handle the current calls while a
shutdown request is pending, a new committed to shutdown phase is needed
so ARI applications can deal with the calls until the system is fully
committed to shutdown.

* Added a new shutdown committed phase so ARI applications can deal with
calls until the final committed to shutdown phase is reached.

* Made refuse new HTTP requests when the system has reached the final
system shutdown phase.  Starting anything while the system is actively
releasing resources and unloading modules is not a good thing.

* Split the bridging framework shutdown to not cleanup the global bridging
containers when shutting down in a hurry.  This is similar to how other
modules prevent crashes on rapid system shutdown.

* Moved ast_begin_shutdown(), ast_cancel_shutdown(), and
ast_shutting_down().  You should not have to include channel.h just to
access these system functions.


Diffs
-----

  /branches/13/res/res_pjsip_pubsub.c 431574 
  /branches/13/res/res_pjsip/pjsip_options.c 431574 
  /branches/13/main/http.c 431574 
  /branches/13/main/channel.c 431574 
  /branches/13/main/bridge.c 431574 
  /branches/13/main/asterisk.c 431574 
  /branches/13/include/asterisk/channel.h 431574 
  /branches/13/include/asterisk.h 431574 
  /branches/13/channels/chan_sip.c 431574 
  /branches/13/apps/app_confbridge.c 431574 

Diff: https://reviewboard.asterisk.org/r/4399/diff/


Testing
-------

Extended the final shutdown phase sleep so I could send a HTTP request
while in the final shutdown phase.  The HTTP request was not refused while
the shutdown request was pending and refused after the final shutdown
phase was reached.


Thanks,

rmudgett

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150211/3eb5fc5c/attachment.html>


More information about the asterisk-dev mailing list