Summary: | ASTERISK-25040: pbx: Improve performance of reloads by making hint destruction more performant | ||||
Reporter: | Matt Jordan (mjordan) | Labels: | |||
Date Opened: | 2015-04-30 10:20:07 | Date Closed: | 2015-07-27 11:32:03 | ||
Priority: | Major | Regression? | |||
Status: | Closed/Complete | Components: | Core/PBX | ||
Versions: | Frequency of Occurrence | ||||
Related Issues: |
| ||||
Environment: | Attachments: | ( 0) ASTERISK-25040-master.diff | |||
Description: | The PBX core maintains two hash tables for hints: a container of the actual hints ({{hints}}), along with a container of devices that are watching that hint ({{hintdevices}}). When a dialplan reload occurs, each hint in the hints container is destroyed; this requires a lookup in the container of devices to find the device => hint mapping object. In the current code, this performs an {{ao2_callback}}, iterating over each of the device to hint objects in the {{hintdevices}} container. For a large number of hints, this is extremely
expensive: dialplan reloads with 20000 hints could take several minutes in just this phase. This process could be made more efficient by storing the key of the device (its name) with the hint. This would prevent an expensive {{ao2_callback}}. | ||||
Comments: | By: Asterisk Team (asteriskteam) 2015-07-26 11:45:36.656-0500 This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable. By: Asterisk Team (asteriskteam) 2015-07-26 11:54:12.240-0500 This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable. |