[asterisk-dev] [Code Review] Remove some unnecessary locking from ast_hangup()
Russell Bryant
reviewboard at asterisk.org
Sun Feb 5 04:27:39 CST 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1712/
-----------------------------------------------------------
(Updated Feb. 5, 2012, 4:27 a.m.)
Review request for Asterisk Developers.
Changes
-------
Updated patch.
1) Move the potentially blocking cleanup (audiohook/framehook destruction) to happen after the channel has been removed from the channels container.
2) No changes were made regarding the picup concerns. Richard mentioned that the zombie flag must get set before the channel lock gets released. This was already being done.
Summary
-------
This patch removes some unnecessary locking of the channels container in ast_hangup(). The reason this came up is that this lock can very quickly block the entire system. If any of the channel cleanup code decides to block, it causes a problem for the whole system. For example, when audiohooks get destroyed, if that blocks for a while waiting on the mixmonitor thread to exit because it's busy blocking on some I/O, it causes a problem for many other threads in the meantime.
Diffs (updated)
-----
/branches/1.8/main/channel.c 354045
Diff: https://reviewboard.asterisk.org/r/1712/diff
Testing
-------
Ran under load in a test environment, about 1/2 million calls
Thanks,
Russell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120205/c5aaad89/attachment.htm>
More information about the asterisk-dev
mailing list