nextcloud / nextcloud/spreed

Error when moving recording file to groupfolder before transcript is delivered

Open
#17,281 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug feature: api 🛠️ feature: recordings ⏺️
Dominant language
JavaScript
Stars
2.2k
Forks
586
Avg merge
18h 27m
Merged PRs (30d)
333

Description

Hello,

Today, after recording a call, I've got the following error:

{
  "reqId": "4nHkR4miUJBPl1oRD6kd",
  "level": 2,
  "time": "2026-03-05T12:12:16+01:00",
  "remoteAddr": "",
  "user": "--",
  "app": "spreed",
  "method": "",
  "url": "--",
  "scriptName": "occ",
  "message": "Could not save recording transcript as the recording could not be found",
  "userAgent": "--",
  "version": "32.0.6.1",
  "occ_command": [
    "occ",
    "background-job:worker"
  ],
  "data": {
    "app": "spreed",
    "owner": "user1",
    "roomToken": "krxzcdv3",
    "recordingFileId": "218779"
  }
}
{
  "reqId": "4nHkR4miUJBPl1oRD6kd",
  "level": 3,
  "time": "2026-03-05T12:12:16+01:00",
  "remoteAddr": "",
  "user": "--",
  "app": "spreed",
  "method": "",
  "url": "--",
  "scriptName": "occ",
  "message": "An error occurred while processing recording AI follow-up task",
  "userAgent": "--",
  "version": "32.0.6.1",
  "occ_command": [
    "occ",
    "background-job:worker"
  ],
  "exception": {
    "Exception": "InvalidArgumentException",
    "Message": "owner_participant",
    "Code": 0,
    "Trace": [
      {
        "file": "/var/www/nextcloud/apps/spreed/lib/Recording/Listener.php",
        "line": 93,
        "function": "storeTranscript",
        "class": "OCA\\Talk\\Service\\RecordingService",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/apps/spreed/lib/Recording/Listener.php",
        "line": 45,
        "function": "handleTranscriptionEvents",
        "class": "OCA\\Talk\\Recording\\Listener",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php",
        "line": 57,
        "function": "handle",
        "class": "OCA\\Talk\\Recording\\Listener",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
        "line": 220,
        "function": "__invoke",
        "class": "OC\\EventDispatcher\\ServiceEventListener",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
        "line": 56,
        "function": "callListeners",
        "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php",
        "line": 67,
        "function": "dispatch",
        "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php",
        "line": 79,
        "function": "dispatch",
        "class": "OC\\EventDispatcher\\EventDispatcher",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/TaskProcessing/Manager.php",
        "line": 1177,
        "function": "dispatchTyped",
        "class": "OC\\EventDispatcher\\EventDispatcher",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/TaskProcessing/Manager.php",
        "line": 1026,
        "function": "setTaskResult",
        "class": "OC\\TaskProcessing\\Manager",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/TaskProcessing/SynchronousBackgroundJob.php",
        "line": 54,
        "function": "processTask",
        "class": "OC\\TaskProcessing\\Manager",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/public/BackgroundJob/Job.php",
        "line": 61,
        "function": "run",
        "class": "OC\\TaskProcessing\\SynchronousBackgroundJob",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/public/BackgroundJob/QueuedJob.php",
        "line": 43,
        "function": "start",
        "class": "OCP\\BackgroundJob\\Job",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/public/BackgroundJob/QueuedJob.php",
        "line": 29,
        "function": "start",
        "class": "OCP\\BackgroundJob\\QueuedJob",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/core/Command/Background/JobWorker.php",
        "line": 132,
        "function": "execute",
        "class": "OCP\\BackgroundJob\\QueuedJob",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/console/Command/Command.php",
        "line": 326,
        "function": "execute",
        "class": "OC\\Core\\Command\\Background\\JobWorker",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/core/Command/Base.php",
        "line": 218,
        "function": "run",
        "class": "Symfony\\Component\\Console\\Command\\Command",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/console/Application.php",
        "line": 1083,
        "function": "run",
        "class": "OC\\Core\\Command\\Base",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/console/Application.php",
        "line": 324,
        "function": "doRunCommand",
        "class": "Symfony\\Component\\Console\\Application",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/3rdparty/symfony/console/Application.php",
        "line": 175,
        "function": "doRun",
        "class": "Symfony\\Component\\Console\\Application",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/lib/private/Console/Application.php",
        "line": 187,
        "function": "run",
        "class": "Symfony\\Component\\Console\\Application",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/console.php",
        "line": 90,
        "function": "run",
        "class": "OC\\Console\\Application",
        "type": "->"
      },
      {
        "file": "/var/www/nextcloud/occ",
        "line": 33,
        "args": [
          "/var/www/nextcloud/console.php"
        ],
        "function": "require_once"
      }
    ],
    "File": "/var/www/nextcloud/apps/spreed/lib/Service/RecordingService.php",
    "Line": 195,
    "message": "An error occurred while processing recording AI follow-up task",
    "exception": {},
    "CustomMessage": "An error occurred while processing recording AI follow-up task"
  }
}

While the LocalAI service was generating the transcript, I moved the webm recording file out of its original folder.

I'm not sure if this is a defect or there is some technical reason to prevent the transcript file to be delivered if the original file is renamed and/or moved.

I'm using Talk 22.0.9 on Nextcloud Server 32.0.6.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with apps/spreed/lib/Recording/Listener.php at the transcription event handler and apps/spreed/lib/Service/RecordingService.php at line 195, using the reported occ background-job:worker path. Reproduce transcript generation while moving the recording file, then establish the expected behavior and verify that the follow-up task completes without the reported recording-not-found or owner_participant errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
audio-video-rtc, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.