nextcloud / nextcloud/backup

Cannot upload to SFTP external storage: Backends provided no user object

Open
#558 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug
Dominant language
PHP
Stars
272
Forks
37
PR merge metrics
No merged PRs in 30d

Description

When trying to upload a restore point to a sftp external storage, the process crashes:

[files] Error: OC\User\NoUserException: Backends provided no user object at <<closure>>

 0. <<closure>>
    OC\Files\Node\Root->getUserFolder()
 1. /var/www/nextcloud/lib/private/Files/Node/LazyFolder.php line 74
    call_user_func_array()
 2. /var/www/nextcloud/lib/private/Files/Node/LazyRoot.php line 40
    OC\Files\Node\LazyFolder->__call()
 3. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 357
    OC\Files\Node\LazyRoot->getUserFolder()
 4. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 209
    OCA\Files_Versions\Listener\FileEventsListener->getPathForNode()
 5. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 107
    OCA\Files_Versions\Listener\FileEventsListener->write_hook()
 6. /var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php line 86
    OCA\Files_Versions\Listener\FileEventsListener->handle()
 7. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 251
    OC\EventDispatcher\ServiceEventListener->__invoke()
 8. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 73
    Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
 9. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 94
    Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
10. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 106
    OC\EventDispatcher\EventDispatcher->dispatch()
11. /var/www/nextcloud/lib/private/Files/Node/HookConnector.php line 112
    OC\EventDispatcher\EventDispatcher->dispatchTyped()
12. /var/www/nextcloud/lib/private/legacy/OC_Hook.php line 105
    OC\Files\Node\HookConnector->write()
13. /var/www/nextcloud/lib/private/Files/View.php line 1252
    OC_Hook::emit()
14. /var/www/nextcloud/lib/private/Files/View.php line 1126
    OC\Files\View->runHooks()
15. /var/www/nextcloud/lib/private/Files/View.php line 670
    OC\Files\View->basicOperation()
16. /var/www/nextcloud/lib/private/Files/Node/File.php line 73
    OC\Files\View->file_put_contents()
17. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 543
    OC\Files\Node\File->putContent()
18. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 452
    OCA\Backup\Service\ExternalFolderService->updateMetadataFile("*** sensitive parameters replaced ***")
19. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 385
    OCA\Backup\Service\ExternalFolderService->createPoint("*** sensitive parameters replaced ***")
20. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 318
    OCA\Backup\Service\ExternalFolderService->confirmPoint()
21. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 178
    OCA\Backup\Service\UploadService->uploadToExternalFolder()
22. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 149
    OCA\Backup\Service\UploadService->uploadPoint()
23. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 119
    OCA\Backup\Cron\Manage->manage()
24. /var/www/nextcloud/lib/private/BackgroundJob/Job.php line 54
    OCA\Backup\Cron\Manage->run()
25. /var/www/nextcloud/lib/private/BackgroundJob/TimedJob.php line 60
    OC\BackgroundJob\Job->execute()
26. /var/www/nextcloud/cron.php line 152
    OC\BackgroundJob\TimedJob->execute()

at 2023-09-12T03:50:03+00:00

[files] Error: OC\User\NoUserException: Backends provided no user object at <<closure>>

 0. <<closure>>
    OC\Files\Node\Root->getUserFolder()
 1. /var/www/nextcloud/lib/private/Files/Node/LazyFolder.php line 74
    call_user_func_array()
 2. /var/www/nextcloud/lib/private/Files/Node/LazyRoot.php line 40
    OC\Files\Node\LazyFolder->__call()
 3. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 357
    OC\Files\Node\LazyRoot->getUserFolder()
 4. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 209
    OCA\Files_Versions\Listener\FileEventsListener->getPathForNode()
 5. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 107
    OCA\Files_Versions\Listener\FileEventsListener->write_hook()
 6. /var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php line 86
    OCA\Files_Versions\Listener\FileEventsListener->handle()
 7. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 251
    OC\EventDispatcher\ServiceEventListener->__invoke()
 8. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 73
    Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
 9. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 94
    Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
10. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 106
    OC\EventDispatcher\EventDispatcher->dispatch()
11. /var/www/nextcloud/lib/private/Files/Node/HookConnector.php line 112
    OC\EventDispatcher\EventDispatcher->dispatchTyped()
12. /var/www/nextcloud/lib/private/legacy/OC_Hook.php line 105
    OC\Files\Node\HookConnector->write()
13. /var/www/nextcloud/lib/private/Files/View.php line 1252
    OC_Hook::emit()
14. /var/www/nextcloud/lib/private/Files/View.php line 1126
    OC\Files\View->runHooks()
15. /var/www/nextcloud/lib/private/Files/View.php line 670
    OC\Files\View->basicOperation()
16. /var/www/nextcloud/lib/private/Files/Node/File.php line 73
    OC\Files\View->file_put_contents()
17. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 543
    OC\Files\Node\File->putContent()
18. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 452
    OCA\Backup\Service\ExternalFolderService->updateMetadataFile("*** sensitive parameters replaced ***")
19. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 385
    OCA\Backup\Service\ExternalFolderService->createPoint("*** sensitive parameters replaced ***")
20. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 318
    OCA\Backup\Service\ExternalFolderService->confirmPoint()
21. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 178
    OCA\Backup\Service\UploadService->uploadToExternalFolder()
22. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 149
    OCA\Backup\Service\UploadService->uploadPoint()
23. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 119
    OCA\Backup\Cron\Manage->manage()
24. /var/www/nextcloud/lib/private/BackgroundJob/Job.php line 54
    OCA\Backup\Cron\Manage->run()
25. /var/www/nextcloud/lib/private/BackgroundJob/TimedJob.php line 60
    OC\BackgroundJob\Job->execute()
26. /var/www/nextcloud/cron.php line 152
    OC\BackgroundJob\TimedJob->execute()

at 2023-09-12T03:50:03+00:00

There are a little more details in the initial forum post I initially opened.

Nextcloud: 27.0.2
Backup: 1.2.0

The SFTP server is a Hetzner storage box, with login/username auth.

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 at apps/backup/lib/Service/ExternalFolderService.php around lines 385, 452, and 543, following the upload path from apps/backup/lib/Service/UploadService.php and the cron entry in apps/backup/lib/Cron/Manage.php. Compare this flow with the files_versions listener at FileEventsListener.php lines 107, 209, and 357, then reproduce the SFTP upload failure and verify that the restore point uploads without the reported NoUserException.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
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.