From c4f055e201de7d059fef399f05667d040d7cbe88 Mon Sep 17 00:00:00 2001 From: sitaowang1998 Date: Thu, 29 May 2025 14:13:13 -0400 Subject: [PATCH] Fix not updating task state to ready when multiple children exists --- src/spider/storage/mysql/MySqlStorage.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/spider/storage/mysql/MySqlStorage.cpp b/src/spider/storage/mysql/MySqlStorage.cpp index a7c321d9..3ba3dd79 100644 --- a/src/spider/storage/mysql/MySqlStorage.cpp +++ b/src/spider/storage/mysql/MySqlStorage.cpp @@ -1639,10 +1639,10 @@ auto MySqlMetadataStorage::task_finish( std::unique_ptr ready_statement( static_cast(conn)->prepareStatement( "UPDATE `tasks` SET `state` = 'ready' WHERE `id` IN (SELECT `task_id` FROM " - "`task_inputs` WHERE `output_task_id` = ?) AND `state` = 'pending' AND NOT " - "EXISTS (SELECT `task_id` FROM `task_inputs` WHERE `task_id` IN (SELECT " - "`task_id` FROM `task_inputs` WHERE `output_task_id` = ?) AND `value` IS " - "NULL AND `data_id` IS NULL)" + "`task_inputs` WHERE `output_task_id` = ?) AND `state` = 'pending' AND " + "`id` NOT IN (SELECT `task_id` FROM `task_inputs` WHERE `task_id` IN " + "(SELECT `task_id` FROM `task_inputs` WHERE `output_task_id` = ?) AND " + "`value` IS NULL AND `data_id` IS NULL)" ) ); ready_statement->setBytes(1, &task_id_bytes);