@@ -1427,16 +1427,16 @@ struct server_queue {
14271427 int post (server_task task, bool front = false ) {
14281428 std::unique_lock<std::mutex> lock (mutex_tasks);
14291429 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+ }
14301434 QUE_DBG (" new task, id = %d, front = %d\n " , task.id , front);
14311435 if (front) {
14321436 queue_tasks.push_front (std::move (task));
14331437 } else {
14341438 queue_tasks.push_back (std::move (task));
14351439 }
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- }
14401440 condition_tasks.notify_one ();
14411441 return task.id ;
14421442 }
@@ -1448,16 +1448,16 @@ struct server_queue {
14481448 if (task.id == -1 ) {
14491449 task.id = id++;
14501450 }
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+ }
14511455 QUE_DBG (" new task, id = %d/%d, front = %d\n " , task.id , (int ) tasks.size (), front);
14521456 if (front) {
14531457 queue_tasks.push_front (std::move (task));
14541458 } else {
14551459 queue_tasks.push_back (std::move (task));
14561460 }
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- }
14611461 }
14621462 condition_tasks.notify_one ();
14631463 return 0 ;
@@ -1554,10 +1554,10 @@ struct server_queue {
15541554 }
15551555
15561556private:
1557- void cleanup_pending_task (int id_task ) {
1557+ void cleanup_pending_task (int id_target ) {
15581558 // 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 ;
15611561 };
15621562 queue_tasks.erase (
15631563 std::remove_if (queue_tasks.begin (), queue_tasks.end (), rm_func),
0 commit comments