diff --git a/core/Migrations/Version30000Date20240906095113.php b/core/Migrations/Version30000Date20240906095113.php new file mode 100644 index 00000000000..4991aecb078 --- /dev/null +++ b/core/Migrations/Version30000Date20240906095113.php @@ -0,0 +1,40 @@ +getTable('taskprocessing_tasks'); + $column = $table->getColumn('error_message'); + + if ($column->getLength() < 4000) { + $column->setLength(4000); + } + + return $schema; + } +} diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index 5316414e8fb..988b34491c1 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -891,7 +891,8 @@ class Manager implements IManager { if ($error !== null) { $task->setStatus(Task::STATUS_FAILED); $task->setEndedAt(time()); - $task->setErrorMessage($error); + // truncate error message to 1000 characters + $task->setErrorMessage(mb_substr($error, 0, 1000)); $this->logger->warning('A TaskProcessing ' . $task->getTaskTypeId() . ' task with id ' . $id . ' failed with the following message: ' . $error); } elseif ($result !== null) { $taskTypes = $this->getAvailableTaskTypes(); @@ -956,7 +957,7 @@ class Manager implements IManager { $this->taskMapper->update($taskEntity); $this->runWebhook($task); } catch (\OCP\DB\Exception $e) { - throw new \OCP\TaskProcessing\Exception\Exception('There was a problem finding the task', 0, $e); + throw new \OCP\TaskProcessing\Exception\Exception($e->getMessage()); } if ($task->getStatus() === Task::STATUS_SUCCESSFUL) { $event = new TaskSuccessfulEvent($task);