diff options
-rw-r--r-- | CHANGES | 11 | ||||
-rw-r--r-- | apps/app_voicemail.c | 21 | ||||
-rw-r--r-- | configs/samples/voicemail.conf.sample | 10 |
3 files changed, 42 insertions, 0 deletions
@@ -9,6 +9,17 @@ ============================================================================== ------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.11.0 to Asterisk 13.12.0 ---------- +------------------------------------------------------------------------------ + +app_voicemail +------------------ + * Added "tps_queue_high" and "tps_queue_low" options. + The options can modify the taskprocessor alert levels for this module. + Additional information can be found in the sample configuration file at + config/samples/voicemail.conf.sample. + +------------------------------------------------------------------------------ --- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ---------- ------------------------------------------------------------------------------ diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 321e5c9c0..5eb767c1c 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -13453,6 +13453,8 @@ static int actual_load_config(int reload, struct ast_config *cfg, struct ast_con int x; unsigned int tmpadsi[4]; char secretfn[PATH_MAX] = ""; + long tps_queue_low; + long tps_queue_high; #ifdef IMAP_STORAGE ast_copy_string(imapparentfolder, "\0", sizeof(imapparentfolder)); @@ -14028,6 +14030,25 @@ static int actual_load_config(int reload, struct ast_config *cfg, struct ast_con pagerbody = ast_strdup(substitute_escapes(val)); } + tps_queue_high = AST_TASKPROCESSOR_HIGH_WATER_LEVEL; + if ((val = ast_variable_retrieve(cfg, "general", "tps_queue_high"))) { + if (sscanf(val, "%30ld", &tps_queue_high) != 1 || tps_queue_high <= 0) { + ast_log(AST_LOG_WARNING, "Invalid the taskprocessor high water alert trigger level '%s'\n", val); + tps_queue_high = AST_TASKPROCESSOR_HIGH_WATER_LEVEL; + } + } + tps_queue_low = -1; + if ((val = ast_variable_retrieve(cfg, "general", "tps_queue_low"))) { + if (sscanf(val, "%30ld", &tps_queue_low) != 1 || + tps_queue_low < -1 || tps_queue_high < tps_queue_low) { + ast_log(AST_LOG_WARNING, "Invalid the taskprocessor low water clear alert level '%s'\n", val); + tps_queue_low = -1; + } + } + if (ast_taskprocessor_alert_set_levels(mwi_subscription_tps, tps_queue_low, tps_queue_high)) { + ast_log(AST_LOG_WARNING, "Failed to set alert levels for voicemail taskprocessor.\n"); + } + /* load mailboxes from users.conf */ if (ucfg) { for (cat = ast_category_browse(ucfg, NULL); cat ; cat = ast_category_browse(ucfg, cat)) { diff --git a/configs/samples/voicemail.conf.sample b/configs/samples/voicemail.conf.sample index bb5f2495d..248e142eb 100644 --- a/configs/samples/voicemail.conf.sample +++ b/configs/samples/voicemail.conf.sample @@ -376,6 +376,16 @@ sendvoicemail=yes ; Allow the user to compose and send a voicemail while inside ; defaults to being off ; backupdeleted=100 +; Asterisk Task Processor Queue Size +; On heavy loaded system you may need to increase 'app_voicemail' taskprocessor queue. +; If the taskprocessor queue size reached high water level, the alert is triggered. +; If the alert is set then some modules (for example pjsip) slow down its production +; until the alert is cleared. +; The alert is cleared when taskprocessor queue size drops to the low water clear level. +; The next options set taskprocessor queue levels for this module. +; tps_queue_high=500 ; Taskprocessor high water alert trigger level. +; tps_queue_low=450 ; Taskprocessor low water clear alert level. + ; The default is -1 for 90% of high water level. [zonemessages] ; Users may be located in different timezones, or may have different |