From 7f97755fa59938709ab397c49fcd578f1f6f7dd0 Mon Sep 17 00:00:00 2001 From: jessevz Date: Wed, 1 Jul 2026 08:10:01 +0200 Subject: [PATCH 1/4] Made task status correct by checking for if task is completed by checking task progress and not keyspaceprogress --- src/inc/apiv2/model/TaskAPI.php | 2 +- src/inc/apiv2/model/TaskWrapperDisplayAPI.php | 2 +- src/inc/utils/TaskUtils.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/inc/apiv2/model/TaskAPI.php b/src/inc/apiv2/model/TaskAPI.php index 355d6399c..adf0575e9 100644 --- a/src/inc/apiv2/model/TaskAPI.php +++ b/src/inc/apiv2/model/TaskAPI.php @@ -188,7 +188,7 @@ protected function getAggregateStatus(object $object): int { $qF1 = new QueryFilter(Chunk::TASK_ID, $object->getId(), "="); $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - return TaskUtils::getStatus($chunks, $keyspace, $keyspaceProgress); + return TaskUtils::getStatus($chunks, $keyspace, taskUtils::getTaskProgress($object)); } /** diff --git a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php index 594606cab..f89ecd3af 100644 --- a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php +++ b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php @@ -127,7 +127,7 @@ protected function getAggregateStatus(object $object): int { $qF1 = new QueryFilter(Chunk::TASK_ID, $task->getId(), "="); $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - $taskStatus = TaskUtils::getStatus($chunks, $task->getKeyspace(), $task->getKeyspaceProgress()); + $taskStatus = TaskUtils::getStatus($chunks, $task->getKeyspace(), taskUtils::getTaskProgress($task)); // if one task of the wrapper is running, it is running if ($taskStatus === 1) { $status = 1; diff --git a/src/inc/utils/TaskUtils.php b/src/inc/utils/TaskUtils.php index e3a7661d7..0e45cf72b 100644 --- a/src/inc/utils/TaskUtils.php +++ b/src/inc/utils/TaskUtils.php @@ -139,7 +139,7 @@ public static function getStatus($chunks, $keyspace, $keyspaceProgress) { $chunkTimeOut = SConfig::getInstance()->getVal(DConfig::CHUNK_TIMEOUT); foreach ($chunks as $chunk) { - if ($now - max($chunk->getSolveTime(), $chunk->getDispatchTime()) < $chunkTimeOut && $chunk->getProgress() < 10000) { + if ($now - max($chunk->getSolveTime(), $chunk->getDispatchTime()) < $chunkTimeOut) { $status = 1; break; } From 1e1292c03c053142dd16be67b23d68a81e26ece4 Mon Sep 17 00:00:00 2001 From: jessevz Date: Wed, 1 Jul 2026 08:43:08 +0200 Subject: [PATCH 2/4] Fixed casing --- src/inc/apiv2/model/TaskAPI.php | 2 +- src/inc/apiv2/model/TaskWrapperDisplayAPI.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/inc/apiv2/model/TaskAPI.php b/src/inc/apiv2/model/TaskAPI.php index adf0575e9..4ee56a3aa 100644 --- a/src/inc/apiv2/model/TaskAPI.php +++ b/src/inc/apiv2/model/TaskAPI.php @@ -188,7 +188,7 @@ protected function getAggregateStatus(object $object): int { $qF1 = new QueryFilter(Chunk::TASK_ID, $object->getId(), "="); $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - return TaskUtils::getStatus($chunks, $keyspace, taskUtils::getTaskProgress($object)); + return TaskUtils::getStatus($chunks, $keyspace, TaskUtils::getTaskProgress($object)); } /** diff --git a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php index f89ecd3af..7fbcec6f2 100644 --- a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php +++ b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php @@ -127,7 +127,7 @@ protected function getAggregateStatus(object $object): int { $qF1 = new QueryFilter(Chunk::TASK_ID, $task->getId(), "="); $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - $taskStatus = TaskUtils::getStatus($chunks, $task->getKeyspace(), taskUtils::getTaskProgress($task)); + $taskStatus = TaskUtils::getStatus($chunks, $task->getKeyspace(), TaskUtils::getTaskProgress($task)); // if one task of the wrapper is running, it is running if ($taskStatus === 1) { $status = 1; From 10a702f0f2ca0ef9c4d04b9cdc0eddcf2495c3ab Mon Sep 17 00:00:00 2001 From: jessevz Date: Wed, 1 Jul 2026 22:51:32 +0200 Subject: [PATCH 3/4] Fixed review comment --- ci/phpunit/inc/utils/TaskUtilsTest.php | 4 ++-- src/inc/apiv2/model/TaskAPI.php | 9 +-------- src/inc/apiv2/model/TaskWrapperDisplayAPI.php | 5 +---- src/inc/utils/TaskUtils.php | 11 +++++++++-- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/ci/phpunit/inc/utils/TaskUtilsTest.php b/ci/phpunit/inc/utils/TaskUtilsTest.php index 92bf8012d..e4cb7074f 100644 --- a/ci/phpunit/inc/utils/TaskUtilsTest.php +++ b/ci/phpunit/inc/utils/TaskUtilsTest.php @@ -45,8 +45,8 @@ public function testEditNotes(): void { * @throws Exception */ public function testGetStatus(): void { - $this->assertEquals(3, TaskUtils::getStatus([], 100, 100)); - $this->assertEquals(3, TaskUtils::getStatus([], 100, 101)); + $taskObjects = $this->createTaskHelper(); + $this->assertEquals(3, TaskUtils::getStatus($taskObjects["task"])); //TODO test status 1 (running) and 2 (idle) too } diff --git a/src/inc/apiv2/model/TaskAPI.php b/src/inc/apiv2/model/TaskAPI.php index 4ee56a3aa..4de8dfad4 100644 --- a/src/inc/apiv2/model/TaskAPI.php +++ b/src/inc/apiv2/model/TaskAPI.php @@ -181,14 +181,7 @@ protected function getAggregateSearched(object $object): string { protected function getAggregateStatus(object $object): int { /** @var Task $object */ - $keyspace = $object->getKeyspace(); - $keyspaceProgress = $object->getKeyspaceProgress(); - - // the filter for progress is needed so we reduce the checked chunks numbers by a lot - $qF1 = new QueryFilter(Chunk::TASK_ID, $object->getId(), "="); - $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); - $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - return TaskUtils::getStatus($chunks, $keyspace, TaskUtils::getTaskProgress($object)); + return TaskUtils::getStatus($object); } /** diff --git a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php index 7fbcec6f2..06d98567e 100644 --- a/src/inc/apiv2/model/TaskWrapperDisplayAPI.php +++ b/src/inc/apiv2/model/TaskWrapperDisplayAPI.php @@ -124,10 +124,7 @@ protected function getAggregateStatus(object $object): int { $total = 0; $status = 0; foreach ($tasks as $task) { - $qF1 = new QueryFilter(Chunk::TASK_ID, $task->getId(), "="); - $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); - $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); - $taskStatus = TaskUtils::getStatus($chunks, $task->getKeyspace(), TaskUtils::getTaskProgress($task)); + $taskStatus = TaskUtils::getStatus($task); // if one task of the wrapper is running, it is running if ($taskStatus === 1) { $status = 1; diff --git a/src/inc/utils/TaskUtils.php b/src/inc/utils/TaskUtils.php index 0e45cf72b..9bb3a9643 100644 --- a/src/inc/utils/TaskUtils.php +++ b/src/inc/utils/TaskUtils.php @@ -128,10 +128,17 @@ public static function editNotes($taskId, $notes, $user) { // Function for taskwrapper api to determine based on the chunks if a task is running, idle or completed. // Status 1 is running, 2 is idle and 3 is completed. - public static function getStatus($chunks, $keyspace, $keyspaceProgress) { + /** + * @param Task $task + */ + public static function getStatus($task) { + $qF1 = new QueryFilter(Chunk::TASK_ID, $task->getId(), "="); + $qF2 = new QueryFilter(Chunk::PROGRESS, 10000, "<"); + $chunks = Factory::getChunkFactory()->filter([Factory::FILTER => [$qF1, $qF2]]); //status 1 is running, 2 is idle and 3 is completed. $status = 2; - if ($keyspaceProgress >= $keyspace && $keyspaceProgress > 0) { + $keyspaceProgress = TaskUtils::getTaskProgress($task); + if ($keyspaceProgress >= $task->getKeyspace() && $keyspaceProgress > 0) { $status = 3; } else { From ad0623caae04c0f481b6c8d892c7f67df4817119 Mon Sep 17 00:00:00 2001 From: jessevz Date: Wed, 1 Jul 2026 22:57:36 +0200 Subject: [PATCH 4/4] Fixed test --- ci/phpunit/inc/utils/TaskUtilsTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/phpunit/inc/utils/TaskUtilsTest.php b/ci/phpunit/inc/utils/TaskUtilsTest.php index e4cb7074f..c5da2122c 100644 --- a/ci/phpunit/inc/utils/TaskUtilsTest.php +++ b/ci/phpunit/inc/utils/TaskUtilsTest.php @@ -46,9 +46,9 @@ public function testEditNotes(): void { */ public function testGetStatus(): void { $taskObjects = $this->createTaskHelper(); - $this->assertEquals(3, TaskUtils::getStatus($taskObjects["task"])); + $this->assertEquals(2, TaskUtils::getStatus($taskObjects["task"])); - //TODO test status 1 (running) and 2 (idle) too + //TODO test status 1 (running) and 3 (completed) too } /**