@@ -1427,16 +1427,16 @@ struct server_queue {
1427
1427
int post (server_task task, bool front = false ) {
1428
1428
std::unique_lock<std::mutex> lock (mutex_tasks);
1429
1429
GGML_ASSERT (task.id != -1 );
1430
+ // if this is cancel task make sure to clean up pending tasks
1431
+ if (task.type == SERVER_TASK_TYPE_CANCEL) {
1432
+ cleanup_pending_task (task.id_target );
1433
+ }
1430
1434
QUE_DBG (" new task, id = %d, front = %d\n " , task.id , front);
1431
1435
if (front) {
1432
1436
queue_tasks.push_front (std::move (task));
1433
1437
} else {
1434
1438
queue_tasks.push_back (std::move (task));
1435
1439
}
1436
- // if this is cancel task make sure to clean up pending tasks
1437
- if (task.type == SERVER_TASK_TYPE_CANCEL) {
1438
- cleanup_pending_task (task.id_target );
1439
- }
1440
1440
condition_tasks.notify_one ();
1441
1441
return task.id ;
1442
1442
}
@@ -1448,16 +1448,16 @@ struct server_queue {
1448
1448
if (task.id == -1 ) {
1449
1449
task.id = id++;
1450
1450
}
1451
+ // if this is cancel task make sure to clean up pending tasks
1452
+ if (task.type == SERVER_TASK_TYPE_CANCEL) {
1453
+ cleanup_pending_task (task.id_target );
1454
+ }
1451
1455
QUE_DBG (" new task, id = %d/%d, front = %d\n " , task.id , (int ) tasks.size (), front);
1452
1456
if (front) {
1453
1457
queue_tasks.push_front (std::move (task));
1454
1458
} else {
1455
1459
queue_tasks.push_back (std::move (task));
1456
1460
}
1457
- // if this is cancel task make sure to clean up pending tasks
1458
- if (task.type == SERVER_TASK_TYPE_CANCEL) {
1459
- cleanup_pending_task (task.id_target );
1460
- }
1461
1461
}
1462
1462
condition_tasks.notify_one ();
1463
1463
return 0 ;
@@ -1554,10 +1554,10 @@ struct server_queue {
1554
1554
}
1555
1555
1556
1556
private:
1557
- void cleanup_pending_task (int id_task ) {
1557
+ void cleanup_pending_task (int id_target ) {
1558
1558
// no need lock because this is called exclusively by post()
1559
- auto rm_func = [id_task ](const server_task & task) {
1560
- return task.id_target == id_task ;
1559
+ auto rm_func = [id_target ](const server_task & task) {
1560
+ return task.id_target == id_target ;
1561
1561
};
1562
1562
queue_tasks.erase (
1563
1563
std::remove_if (queue_tasks.begin (), queue_tasks.end (), rm_func),
0 commit comments