[asterisk-dev] RealTime, Large Dialplans,
and headaches... got any ideas?
murf at digium.com
Tue Mar 27 13:35:05 MST 2007
OK, I just closed 9037 after a conversation with kpfleming.
Here is the situation:
9037's reporter is complaining that with a large dialplan, in order to
look up an extension, and do the pattern matching, asterisk pulls every
extension from the context in the DB, and tries to find the best match.
When the dialplan gets big, and you have hundreds/thousands (or more) of
extensions, then this takes a while. The user was reporting 5 or more
I've been working on a search-tree algorithm that would find an
extension match a bit faster in a large dialplan. It's speed is a
function of the length of the patterns, not of how many extensions there
are. I thought I might apply this to the RT extensions, and keep an
in-mem copy of the search tree... but it depends on a lot of things,
like being able to discern an update to the DB of the dialplan, so you
can reform (or spot edit, which I believe is possible) the in-mem search
Kevin pointed out:
This is impossible because you have no way of knowing when the
is modified. Even if you did, you'd have to resort to rebuilding
'search tree' in memory, and if the dialplan is large enough
other issue comes into the picture as well.
This is an artifact of the way the Realtime system is
means that it is broken. It is not fixable in the current
If someone in the community has a brilliant flash of inspiration as to
how this problem could be solved, we'd love to hear about it! Any ideas?
More information about the asterisk-dev