Summary:ASTERISK-13096: [patch] The function ARRAY slows asterisk down
Reporter:Theo Belder (tbelder)Labels:
Date Opened:2008-11-20 09:13:29.000-0600Date Closed:2008-12-11 15:46:25.000-0600
Versions:Frequency of
Environment:Attachments:( 0) 13940.diff
Description:Channel autoservice should removed from the code for function ARRAY().

I will provide a patch for this.
Comments:By: Theo Belder (tbelder) 2008-11-20 09:20:31.000-0600

I've reported this on asterisk-dev, and Russell Bryant says that channel autoservice should be removed in this case.

By: Theo Belder (tbelder) 2008-11-20 10:40:23.000-0600

FYI: i've sent this email to Russell Bryant since i'm wondering whether this is the right solution.

I am wondering whether that removing autoservice in this case would be such a good idea.
Since the Set(ARRAY()) function is also used in combination of func_odbc to set multiple entries from a database lookup.
Obviously an ODBC lookup might also block for an appreciable period of time.
If this is indeed the case, then the autoservice should also be called during a normal Set(). Am I mistaken?

By: Theo Belder (tbelder) 2008-11-25 04:07:38.000-0600

Russell said on the asterisk-dev mailinglist that the code for channel autoservice should be removed at the ARRAY() function.
func_odbc will handle putting the channel into autoservice.

By: Leif Madsen (lmadsen) 2008-11-25 07:30:23.000-0600

Assigned to Corydon76 since I feel he will have a good idea how to move this issue forward.

tbelder: thanks for quoting the mailing list

By: Theo Belder (tbelder) 2008-12-05 07:38:26.000-0600

Corydon76, do you have already a good idea about this issue ;)

By: Digium Subversion (svnbot) 2008-12-11 15:46:25.000-0600

Repository: asterisk
Revision: 163253

U   branches/1.4/funcs/func_cut.c
U   branches/1.4/funcs/func_strings.c

r163253 | russell | 2008-12-11 15:46:24 -0600 (Thu, 11 Dec 2008) | 8 lines

Fix some observed slowdowns in dialplan processing.

The change is to remove autoservice usage from dialplan functions that do not
need it because they do not perform operations that potentially block.

(closes issue ASTERISK-13096)
Reported by: tbelder