Closed squid-f closed 14 hours ago
Scan the folder with occ files:scan --path and try again
Scan the folder with occ files:scan --path and try again
Same error:
{"reqId":"JeXCrXVgGp87IXjQ70WY","level":2,"time":"2024-07-19T17:52:06+02:00","remoteAddr":"192.168.1.21","user":"user","app":"no app in context","method":"DELETE","url":"/remote.php/dav/files/user/Photos/24-07-17%2017-36-30%203256.mov","message":"delete process aborted","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0","version":"29.0.3.4","exception":{"Exception":"OCP\\Exceptions\\AbortedEventException","Message":"Cannot delete the video part of a live photo","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/files/lib/Listener/SyncLivePhotosListener.php","line":89,"function":"handleDeletion","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php","line":86,"function":"handle","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->"},{"file":"/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":230,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->"},{"file":"/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":59,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php","line":86,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php","line":98,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Node/HookConnector.php","line":131,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/legacy/OC_Hook.php","line":105,"function":"delete","class":"OC\\Files\\Node\\HookConnector","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1282,"function":"emit","class":"OC_Hook","type":"::"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1154,"function":"runHooks","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":705,"function":"basicOperation","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php","line":543,"function":"unlink","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":197,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":281,"function":"delete","class":"Sabre\\DAV\\Tree","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpDelete","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":321,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Server.php","line":379,"function":"exec","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php","line":35,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/remote.php","line":172,"args":["/var/www/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/nextcloud/apps/files/lib/Listener/SyncLivePhotosListener.php","Line":195,"message":"delete process aborted","exception":[],"CustomMessage":"delete process aborted"},"id":"669a8bc115dc7"}
Edit: I did a scan --all and I got:
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 3796 | 70147 | 0 | 44316 | 0 | 0 | 00:00:20 |
+---------+-------+-----+---------+---------+--------+--------------+
CC @artonge
and now my Nextcloud journal is flood by messages like:
{"reqId":"ju95V155jnxyKuCtowHo","level":2,"time":"2024-07-21T07:57:18+02:00","remoteAddr":"192.168.1.21","user":"user","app":"no app in context","method":"DELETE","url":"/remote.php/dav/files/user/Photos/24-07-18%2010-59-07%203259.mov","message":"delete process aborted","userAgent":"Mozilla/5.0 (Linux) mirall/3.13.2git (Nextcloud, garuda-6.9.10-zen1-1-zen ClientArchitecture: x86_64 OsArchitecture: x86_64)","version":"29.0.3.4","exception":{"Exception":"OCP\\Exceptions\\AbortedEventException","Message":"Cannot delete the video part of a live photo","Code":0,"Trace":[{"file":"/var/www/nextcloud/apps/files/lib/Listener/SyncLivePhotosListener.php","line":89,"function":"handleDeletion","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php","line":86,"function":"handle","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->"},{"file":"/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":230,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->"},{"file":"/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":59,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php","line":86,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php","line":98,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/Node/HookConnector.php","line":131,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/legacy/OC_Hook.php","line":105,"function":"delete","class":"OC\\Files\\Node\\HookConnector","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1282,"function":"emit","class":"OC_Hook","type":"::"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":1154,"function":"runHooks","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/lib/private/Files/View.php","line":705,"function":"basicOperation","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php","line":543,"function":"unlink","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php","line":197,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":281,"function":"delete","class":"Sabre\\DAV\\Tree","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpDelete","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":253,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":321,"function":"start","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/lib/Server.php","line":379,"function":"exec","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php","line":35,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/nextcloud/remote.php","line":172,"args":["/var/www/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/nextcloud/apps/files/lib/Listener/SyncLivePhotosListener.php","Line":195,"message":"delete process aborted","exception":[],"CustomMessage":"delete process aborted"},"id":"669ca4ade99a1"}
Maybe a hint here, looking at row 143 onwards? https://github.com/nextcloud/server/blob/a58ed05f1d19d591a1ed384e87915db952c5f163/apps/files/lib/Listener/SyncLivePhotosListener.php
I think it is expected, but could maybe be improved. Also, in the web UI, you should not be able to see the .mov file.
I think it is expected, but could maybe be improved. Also, in the web UI, you should not be able to see the .mov file.
Well, both a .JPEG and a .mov are uploaded by the iOS app. On my desktop computer, I can see both of them synced. If I remove either the .jpeg or the .mov with my file manager, I do expect they are removed from the server as well. Why enforcing a different behavior compared to the removal of any other file type?
We can only display them as one file in the web UI and in mobile applications. So on those platform, there is no chance to wrongly delete one part or the other, which would "break" the live photo. On the desktop client, we are not able to show them as one file, so our logic was to block the deletion of the .mov file to prevent users from breaking their live photos.
Understood, however can you prevent to delete the .mov on desktop ? What about not convertibg heic pictures and uploading them as heic ?
can you prevent to delete the .mov on desktop
You mean, blocking the delete action? I don't think that's possible. You can ask in the desktop repo.
What about not convertibg heic pictures and uploading them as heic ?
I am not sure to understand your question. I don't think we are converting anything.
Hi. Indeed, desktop delete cannit be blocked, that's my point. So, If the user wants to delete the .mov, it should be reflected on server side.
Regarding conversion, my phone takes a heic picture and nextcloud upload it to the server, using a jpeg and a mov file. It is where the conversion happens. If one wants to prevent braking a live photo by deleting the mov file, I think uploading a heic format is a better option. Otherwise, it should be up to the user to decide which files to keep.
So, If the user wants to delete the .mov, it should be reflected on server side.
That's not the decision we made, as we think this is not what the user will expect.
From what I understand, the .heic does not contain the video part of a live photo. On iOS, you do not see the video file as Apple is hiding it, like we are doing on the web UI. So whenever you move the live photos out of iOS, you end up with two different files.
My understanding is rather heic/ heif is a container including a series of images to create a live picture. So, one file only. I let experts confirming, as I am not.
My understanding is rather heic/ heif is a container including a series of images to create a live picture. So, one file only.
If that's true, then better ask the client's repositories.
Hi. There is already another report targeting the client. We made a digression while talking about live pictures. This report is about a feature taking rights over the user, preventing to delete a file on the server. It cannot be that something has more rigths on the files than the user owning them, IMHO.
Edit: to summarize, I have now .mov files on the server which don't exist on my local computer and that I can't delete. In additing, it looks like there is an event coming back periodically, retrying to delete on the server, failing and flooding my log with errors.
I think this is a desktop client bug. The client should never try to delete the mov.
Basically this is one file, which because of limitations on the desktop, will be synced as two files. In the webui it is correctly shown as one file.
So if you delete any of it, "both" will be gone.
Fair enough you don't want to bother with people who delete the .mov files for what ever reason.
I think somewhere should at least be a introduction for this behaveiour and solution. So clients can know what they do.
I also think there should be a possibility to redownload the missing .mov files on desktop side, once deleted. I imagine something like a secondary click on a folder and selecting "resynchronize" or "redownload from server".
This looks to be probably a duplicate of #42237
yes duplicate of https://github.com/nextcloud/server/issues/42237
⚠️ This issue respects the following points: ⚠️
Bug description
After facing https://github.com/nextcloud/desktop/issues/6330#issuecomment-2239395618 I connected to my nextcloud account using Firefox to check whether the .mov file I deleted in Dolphin has been deleted from my account, as I got a client error notification. It appears the .mov file (created during the automatic transfer of an HEIC file by the Nextcloud on my iPhone) has been deleted locally on my desktop but is still present on the server. Even more weird, I cannot delete the .mov file using the web interface. I get
Avertissement: delete process aborted
Steps to reproduce
Expected behavior
The .mov file can be deleted on the server using a web browser connection
Installation method
Community Manual installation with Archive
Nextcloud Server version
29
Operating system
Other
PHP engine version
PHP 8.2
Web server
Nginx
Database engine version
MariaDB
Is this bug present after an update or on a fresh install?
None
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
Configuration report
List of activated Apps
Nextcloud Signing status
Nextcloud Logs
Additional info
No response