]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
taskprocessor.c: Tweak high water checks. 76/3476/1
authorRichard Mudgett <rmudgett@digium.com>
Tue, 2 Aug 2016 18:53:35 +0000 (13:53 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Thu, 11 Aug 2016 16:59:08 +0000 (11:59 -0500)
* The high water check in ast_taskprocessor_alert_set_levels() would
trigger immediately if the new high water level is zero and the queue was
empty.

* The high water check in taskprocessor_push() was off by one.

Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d

main/taskprocessor.c

index 0c429cf3f7ec2318c6229f939115b97368d1fa96..bbf282c27a5ac1bf4ab06b493d51d886b5e98981 100644 (file)
@@ -608,7 +608,7 @@ int ast_taskprocessor_alert_set_levels(struct ast_taskprocessor *tps, long low_w
                        tps_alert_add(tps, -1);
                }
        } else {
-               if (high_water <= tps->tps_queue_size) {
+               if (high_water < tps->tps_queue_size) {
                        /* Update water mark alert immediately */
                        tps->high_water_alert = 1;
                        tps_alert_add(tps, +1);
@@ -883,11 +883,11 @@ static int taskprocessor_push(struct ast_taskprocessor *tps, struct tps_task *t)
        AST_LIST_INSERT_TAIL(&tps->tps_queue, t, list);
        previous_size = tps->tps_queue_size++;
 
-       if (previous_size >= tps->tps_queue_high) {
+       if (tps->tps_queue_high <= tps->tps_queue_size) {
                if (!tps->high_water_warned) {
                        tps->high_water_warned = 1;
-                       ast_log(LOG_WARNING, "The '%s' task processor queue reached %d scheduled tasks.\n",
-                               tps->name, previous_size);
+                       ast_log(LOG_WARNING, "The '%s' task processor queue reached %ld scheduled tasks.\n",
+                               tps->name, tps->tps_queue_size);
                }
                if (!tps->high_water_alert) {
                        tps->high_water_alert = 1;