Skip to content

Commit

Permalink
app_queue: Don't reset queue stats on reload
Browse files Browse the repository at this point in the history
Prevents reloads of app_queue from also resetting
queue statistics.

Also preserves individual queue agent statistics
if we're just reloading members.

ASTERISK-28701

Change-Id: Ib5d4cdec175e44de38ef0f6ede4a7701751766f1
  • Loading branch information
InterLinked1 authored and Friendly Automation committed Aug 25, 2021
1 parent 63d27af commit 92f9ae3
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
10 changes: 7 additions & 3 deletions apps/app_queue.c
Expand Up @@ -9339,9 +9339,13 @@ static void reload_single_member(const char *memberdata, struct call_queue *q)
if ((newm = create_queue_member(interface, membername, penalty, cur ? cur->paused : 0, state_interface, ringinuse, wrapuptime))) {
newm->wrapuptime = wrapuptime;
if (cur) {
/* Round Robin Queue Position must be copied if this is replacing an existing member */
ao2_lock(q->members);
/* Round Robin Queue Position must be copied if this is replacing an existing member */
newm->queuepos = cur->queuepos;
/* Don't reset agent stats either */
newm->calls = cur->calls;
newm->lastcall = cur->lastcall;

ao2_link(q->members, newm);
ao2_unlink(q->members, cur);
ao2_unlock(q->members);
Expand Down Expand Up @@ -10407,7 +10411,7 @@ static int manager_queue_reload(struct mansession *s, const struct message *m)
}

if (!header_found) {
ast_set_flag(&mask, AST_FLAGS_ALL);
ast_set_flag(&mask, AST_FLAGS_ALL & ~QUEUE_RESET_STATS);
}

if (!reload_handler(1, &mask, queuename)) {
Expand Down Expand Up @@ -11146,7 +11150,7 @@ static char *handle_queue_reload(struct ast_cli_entry *e, int cmd, struct ast_cl
} else if (!strcasecmp(a->argv[2], "parameters")) {
ast_set_flag(&mask, QUEUE_RELOAD_PARAMETERS);
} else if (!strcasecmp(a->argv[2], "all")) {
ast_set_flag(&mask, AST_FLAGS_ALL);
ast_set_flag(&mask, AST_FLAGS_ALL & ~QUEUE_RESET_STATS);
}

if (a->argc == 3) {
Expand Down
7 changes: 7 additions & 0 deletions doc/CHANGES-staging/app_queue_stats.txt
@@ -0,0 +1,7 @@
Subject: app_queue

Reload behavior in app_queue has been changed so
queue and agent stats are not reset during full
app_queue module reloads. The queue reset stats
CLI command may still be used to reset stats while
Asterisk is running.

0 comments on commit 92f9ae3

Please sign in to comment.