Describe the bug
After initial sync with floccus to an empty bookmarks app it is neither possible to delete some bookmarks and/or folders which do contain bookmarks that are not deletable. In this state it's also not possible to delete all bookmarks.
Newly created and empty folders can be deleted, also most of the bookmarks.
It seems that some bookmarks that are created via floccus are somehow broken regarding the app internal storage. So this issue is likely related to https://github.com/marcelklehr/floccus/issues/595.
To Reproduce
Steps to reproduce the behavior:
No errors are collected in the Nextcloud server log.
Expected behavior
All bookmarks, folders, single bookmarks and selections should always be deletable.
Desktop (please complete the following information):
Server (please complete the following information):
If additional server information is needed I will have to ask my hoster.
Nextcloud log (nextcloud/data/nextcloud.log)
no related log entries
Browser log
The javascript console log (same for both - failed deletion of folder and bookmark)
xhr.js:178 DELETE https://HOST/index.php/apps/bookmarks/folder/31 503 (Service Unavailable)
(anonymous) @ vuex.esm.js:6
t.exports @ vuex.esm.js:6
t.exports @ UserBubble.js:109
Promise.then (async)
c.request @ UserBubble.js:109
r.forEach.c.<computed> @ UserBubble.js:109
(anonymous) @ vuex.esm.js:6
(anonymous) @ bookmarks.main.js?v=92201fc6-8:1
(anonymous) @ popper.js:25
l.dispatch @ vuex.esm.js:6
dispatch @ popper.js:25
onDelete @ bookmarks.main.js?v=92201fc6-8:504
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
zt @ vue.runtime.esm.js:8
t.$emit @ vue.runtime.esm.js:8
onClick @ ActionButton.js:1
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
s._wrapper @ vue.runtime.esm.js:8
actions.js:394 Error: Request failed with status code 503
at t.exports (createError.js:16)
at t.exports (settle.js:17)
at XMLHttpRequest.d.onreadystatechange (xhr.js:61)
(anonymous) @ bookmarks.main.js?v=92201fc6-8:1
Promise.catch (async)
(anonymous) @ bookmarks.main.js?v=92201fc6-8:1
(anonymous) @ popper.js:25
l.dispatch @ vuex.esm.js:6
dispatch @ popper.js:25
onDelete @ bookmarks.main.js?v=92201fc6-8:504
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
zt @ vue.runtime.esm.js:8
t.$emit @ vue.runtime.esm.js:8
onClick @ ActionButton.js:1
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
s._wrapper @ vue.runtime.esm.js:8
createError.js:16 Uncaught (in promise) Error: Request failed with status code 503
at t.exports (createError.js:16)
at t.exports (settle.js:17)
at XMLHttpRequest.d.onreadystatechange (xhr.js:61)
t.exports @ vuex.esm.js:6
t.exports @ UserBubble.js:109
d.onreadystatechange @ vuex.esm.js:6
Promise.then (async)
(anonymous) @ vuex.esm.js:6
l.dispatch @ vuex.esm.js:6
dispatch @ popper.js:25
onDelete @ bookmarks.main.js?v=92201fc6-8:504
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
zt @ vue.runtime.esm.js:8
t.$emit @ vue.runtime.esm.js:8
onClick @ ActionButton.js:1
zt @ vue.runtime.esm.js:8
n @ vue.runtime.esm.js:8
s._wrapper @ vue.runtime.esm.js:8
Mmh, 503 (Service Unavailable) is curious. There might bee something wrong with the reverse proxy set up.
{"reqId":"XwQJVUtDkGfLBS6MjntADgAAAcY","level":3,"time":"2020-07-07T05:34:14+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"PHP","method":"POST","url":"/index.php/apps/bookmarks/public/rest/v2/bookmark","message":"parse_url() expects parameter 1 to be string, array given at /var/www/vhosts//httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php#69","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:77.0) Gecko/20100101 Firefox/77.0","version":"18.0.6.0"}
{"reqId":"XwQJVUtDkGfLBS6MjntADgAAAcY","level":3,"time":"2020-07-07T05:34:14+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"index","method":"POST","url":"/index.php/apps/bookmarks/public/rest/v2/bookmark","message":{"Exception":"Exception","Message":"Argument 1 passed to GuzzleHttp\\Psr7\\Uri::applyParts() must be of the type array, null given, called in /var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php on line 73","Code":0,"Trace":[{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\BookmarkController","newBookmark",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/public/rest/v2/bookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","Line":109,"Previous":{"Exception":"TypeError","Message":"Argument 1 passed to GuzzleHttp\\Psr7\\Uri::applyParts() must be of the type array, null given, called in /var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php on line 73","Code":0,"Trace":[{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php","line":73,"function":"applyParts","class":"GuzzleHttp\\Psr7\\Uri","type":"->","args":[null]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Request.php","line":41,"function":"__construct","class":"GuzzleHttp\\Psr7\\Uri","type":"->","args":[[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Http/RequestFactory.php","line":19,"function":"__construct","class":"GuzzleHttp\\Psr7\\Request","type":"->","args":["GET",[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/marcelklehr/link-preview/src/Models/Link.php","line":60,"function":"createRequest","class":"OCA\\Bookmarks\\Http\\RequestFactory","type":"->","args":["GET",[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/marcelklehr/link-preview/src/Models/Link.php","line":69,"function":"fetch","class":"Marcelklehr\\LinkPreview\\Models\\Link","type":"->","args":[]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Service/LinkExplorer.php","line":44,"function":"getPreview","class":"Marcelklehr\\LinkPreview\\Models\\Link","type":"->","args":[]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Service/BookmarkService.php","line":103,"function":"get","class":"OCA\\Bookmarks\\Service\\LinkExplorer","type":"->","args":["https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Controller/BookmarkController.php","line":426,"function":"create","class":"OCA\\Bookmarks\\Service\\BookmarkService","type":"->","args":["[EMAIL-ADDRESS]","https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004","Nutrilife Schwarzk\u00fcmmel\u00f6l ungefiltert | kraeuterland.de","",[],[79]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":170,"function":"newBookmark","class":"OCA\\Bookmarks\\Controller\\BookmarkController","type":"->","args":["https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004","Nutrilife Schwarzk\u00fcmmel\u00f6l ungefiltert | kraeuterland.de","",[],[79]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":99,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\BookmarkController","newBookmark",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/public/rest/v2/bookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php","Line":535},"CustomMessage":"--"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:77.0) Gecko/20100101 Firefox/77.0","version":"18.0.6.0"}
{"reqId":"XwQJsgS89DexcuzzspsYPgAAAYU","level":3,"time":"2020-07-07T05:35:47+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"PHP","method":"POST","url":"/index.php/apps/bookmarks/public/rest/v2/bookmark","message":"parse_url() expects parameter 1 to be string, array given at /var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php#69","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:77.0) Gecko/20100101 Firefox/77.0","version":"18.0.6.0"}
{"reqId":"XwQJsgS89DexcuzzspsYPgAAAYU","level":3,"time":"2020-07-07T05:35:47+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"index","method":"POST","url":"/index.php/apps/bookmarks/public/rest/v2/bookmark","message":{"Exception":"Exception","Message":"Argument 1 passed to GuzzleHttp\\Psr7\\Uri::applyParts() must be of the type array, null given, called in /var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php on line 73","Code":0,"Trace":[{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\BookmarkController","newBookmark",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/public/rest/v2/bookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","Line":109,"Previous":{"Exception":"TypeError","Message":"Argument 1 passed to GuzzleHttp\\Psr7\\Uri::applyParts() must be of the type array, null given, called in /var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php on line 73","Code":0,"Trace":[{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php","line":73,"function":"applyParts","class":"GuzzleHttp\\Psr7\\Uri","type":"->","args":[null]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Request.php","line":41,"function":"__construct","class":"GuzzleHttp\\Psr7\\Uri","type":"->","args":[[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Http/RequestFactory.php","line":19,"function":"__construct","class":"GuzzleHttp\\Psr7\\Request","type":"->","args":["GET",[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/marcelklehr/link-preview/src/Models/Link.php","line":60,"function":"createRequest","class":"OCA\\Bookmarks\\Http\\RequestFactory","type":"->","args":["GET",[]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/marcelklehr/link-preview/src/Models/Link.php","line":69,"function":"fetch","class":"Marcelklehr\\LinkPreview\\Models\\Link","type":"->","args":[]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Service/LinkExplorer.php","line":44,"function":"getPreview","class":"Marcelklehr\\LinkPreview\\Models\\Link","type":"->","args":[]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Service/BookmarkService.php","line":103,"function":"get","class":"OCA\\Bookmarks\\Service\\LinkExplorer","type":"->","args":["https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/lib/Controller/BookmarkController.php","line":426,"function":"create","class":"OCA\\Bookmarks\\Service\\BookmarkService","type":"->","args":["[EMAIL-ADDRESS]","https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004","Nutrilife Schwarzk\u00fcmmel\u00f6l ungefiltert | kraeuterland.de","",[],[79]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":170,"function":"newBookmark","class":"OCA\\Bookmarks\\Controller\\BookmarkController","type":"->","args":["https://www.kraeuterland.de/schwarzkuemmeloel/schwarzkuemmeloel-ungefiltert/nutrilife-schwarzkuemmeloel-ungefiltert.html?number=100004","Nutrilife Schwarzk\u00fcmmel\u00f6l ungefiltert | kraeuterland.de","",[],[79]]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":99,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\BookmarkController"},"newBookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\BookmarkController","newBookmark",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"_route":"bookmarks.bookmark.new_bookmark"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/public/rest/v2/bookmark"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/apps/bookmarks/vendor/guzzlehttp/psr7/src/Uri.php","Line":535},"CustomMessage":"--"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:77.0) Gecko/20100101 Firefox/77.0","version":"18.0.6.0"}
{"reqId":"XwQMLWlu7ex0fqvicB480AAAAgk","level":3,"time":"2020-07-07T05:46:21+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"index","method":"GET","url":"/index.php/apps/bookmarks/bookmark/83/favicon","message":{"Exception":"TypeError","Message":"Argument 3 passed to OC\\AppFramework\\Middleware\\MiddlewareDispatcher::beforeOutput() must be of the type string, null given, called in /var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php on line 123","Code":0,"Trace":[{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":123,"function":"beforeOutput","class":"OC\\AppFramework\\Middleware\\MiddlewareDispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\InternalBookmarkController"},"getBookmarkFavicon",null]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\InternalBookmarkController"},"getBookmarkFavicon"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\InternalBookmarkController","getBookmarkFavicon",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"id":"83","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"id":"83","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"id":"83","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/bookmark/83/favicon"]},{"file":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[HOST]/httpdocs/nextcloud/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php","Line":159,"CustomMessage":"--"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36","version":"18.0.6.0"}
This is a bug in a dependency of the app, which is now fixed. Have you been able to recover from the undeletable situation somehow? If not, I may be able to write a repair step that takes care of this.
Have you been able to recover from the undeletable situation somehow? If not, I may be able to write a repair step that takes care of this.
Unfortunately not. So a repair step would be great.
I see. Do you get any errors in the nextcloud log when trying to delete the bookmarks?
Do you get any errors in the nextcloud log when trying to delete the bookmarks?
Nope, only a popup showing 'Failed to delete folder' and the JavaScript errors in the browsers development tools log that I did put into the bug description.
'Delete all bookmarks' results in the 503 error but also without a log entry.
Mmmh, then we'll have to isolate this from a different angle. If you have identified an undeletable bookmark, you can find out its ID, by checking e.g. its favicon url. Once you have the ID, please try to inspect your database, if you have access,
SELECT * from oc_bookmarks WHERE id = YOURID;
SELECT * from oc_bookmarks_tree WHERE id = YOURID;
...and paste the redacted results here.
I guess I found an erroneous bookmark and I get a log entry when I try to delete only this bookmark. I asked my hoster to run the two SQL statements with the ID mentioned within the log entry and will post the results when I got the response.
This is the corresponding log entry:
{"reqId":"Xxfz7p7cukayrXNBF3RrUgAAAgM","level":3,"time":"2020-07-22T08:08:14+00:00","remoteAddr":"[IP-ADDRESS]","user":"[EMAIL-ADDRESS]","app":"index","method":"GET","url":"/index.php/apps/bookmarks/bookmark/635/favicon","message":{"Exception":"TypeError","Message":"Argument 3 passed to OC\\AppFramework\\Middleware\\MiddlewareDispatcher::beforeOutput() must be of the type string, null given, called in /var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php on line 123","Code":0,"Trace":[{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":123,"function":"beforeOutput","class":"OC\\AppFramework\\Middleware\\MiddlewareDispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\InternalBookmarkController"},"getBookmarkFavicon",null]},{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/AppFramework/App.php","line":125,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Bookmarks\\Controller\\InternalBookmarkController"},"getBookmarkFavicon"]},{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php","line":47,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Bookmarks\\Controller\\InternalBookmarkController","getBookmarkFavicon",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"id":"635","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"function":"__invoke","class":"OC\\AppFramework\\Routing\\RouteActionHandler","type":"->","args":[{"id":"635","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/Route/Router.php","line":299,"function":"call_user_func","args":[{"__class__":"OC\\AppFramework\\Routing\\RouteActionHandler"},{"id":"635","_route":"bookmarks.internal_bookmark.get_bookmark_favicon"}]},{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/base.php","line":1008,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/bookmarks/bookmark/635/favicon"]},{"file":"/var/www/vhosts/[URL]/httpdocs/nextcloud/index.php","line":38,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/vhosts/[URL]/httpdocs/nextcloud/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php","Line":159,"CustomMessage":"--"},"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36","version":"18.0.7.1","id":"5f17f4030e667"}
Once you have the ID, please try to inspect your database
MariaDB> SELECT * from oc_bookmarks WHERE id = 635;
+-----+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+----------------------+-------------+------------+--------------+------------+--------------+
| id | url | title | user_id | description | added | lastmodified | clickcount | last_preview |
+-----+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+----------------------+-------------+------------+--------------+------------+--------------+
| 635 | http://www.schreibplattform.de/15-fakten-kennen-bevors-ans-buch-schreiben-geht/ | Diese 15 Fakten kennen, bevors mit Buch schreiben los geht | Schreibplattform | [EMAIL-ADDRESS] | | 1594100022 | 1594100022 | 0 | 0 |
+-----+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+----------------------+-------------+------------+--------------+------------+--------------+
MariaDB> SELECT * from oc_bookmarks_tree WHERE id = 635;
+----------+-----+---------------+-------+
| type | id | parent_folder | index |
+----------+-----+---------------+-------+
| bookmark | 635 | 141 | 4 |
| bookmark | 635 | 344 | 1 |
+----------+-----+---------------+-------+
I'm sorry for the delay. I'm stomped, because the error seems to be unrelated and the SQL output doesn't show anything suspicious.
No worries. It is not essential for life. Let's make life easy. We can just ignore the repair step.
Will the deletion of the app in my instance remove all related data and specific tables from the DB?
I can then test importing my bookmarks via floccus again with a fresh installation.
Will the deletion of the app in my instance remove all related data and specific tables from the DB?
sadly no. This might be a good reason for adding an occ command
As long we have no OCC command for that, can you explain which tables I need to delete manually and which data needs to be deleted from common Nextcloud tables? If this is to complex I will have to wait for the OCC command.
Oh, sure. I forgot to add that.
DROP TABLE oc_bookmarks;
DROP TABLE oc_bookmarks_tags;
DROP TABLE oc_bookmarks_folders;
DROP TABLE oc_bookmarks_root_folders;
DROP TABLE oc_bookmarks_tree;
DROP TABLE oc_bookmarks_shared_folders;
DROP TABLE oc_bookmarks_shared_to_shares;
DROP TABLE oc_bookmarks_shares;
DROP TABLE oc_bookmarks_folders_public;
DELETE FROM oc_migrations WHERE app = 'bookmarks';
Uninstalled the Bookmarks app, support team did run the SQL statements and install the newest version of Bookmarks app (3.3.3). Closing this issue...
Well, I installed Bookmarks 3.3.4 and synced <1900 Bookmarks with Floccus 4.2.6 on Chrome and Firefox.
I still can't delete single folders, selection of folders, selections of bookmarks and even single bookmarks. It's also not possible to delete all bookmarks. Still, no log entries. Just popups notifying that deletion failed and in case of deleting all bookmarks a 503 error.
When creating folders bookmarks manually I can delete them without problems.
I have the feeling that there might be a basic conceptual issue with Floccus and the sync process. At least when you have multiple duplicate bookmarks in two different browsers which are synced into two separated folders within the Nextcloud instance.
Beside that. When trying to delete bookmarks/folders manually the app quite often reports the 'Failed to delete Bookmark' or 'Failed to delete Folder'. BUT, when I refresh the page in about 50% of the times the bookmarks/folders are actually not shown anymore. This behavior is the same when deleting single bookmarks, single folders or selections of bookmarks and folders.
I don't know if the DB state is correct, though, at least as the number of bookmarks shown in the sidebar does not change at all.
Could this be an issue with some recursive/tree walker and/or refresh logic?
BUT, when I refresh the page in about 50% of the times the bookmarks/folders are actually not shown anymore.
This feels again like a timeout issue, I think.
Just popups notifying that deletion failed and in case of deleting all bookmarks a 503 error.
Could you go into the developer tools in your browser and check the network tab to see how the requests fail? I.e. for each deletion there should be a row in there. Clicking on that you should see the response and the response code. That might be illuminating.
If all else fails, it might be helpful to send me a db dump, so I can debug fist hand.
Could you go into the developer tools in your browser and check the network tab to see how the requests fail?
This result is from using 'Delete All Bookmarks'. When deleting a selection of folders, a single folder and a selection of bookmarks the network response is the same (beside cookie and response token) and I always just get one single entry in the network console.
bookmarks.main.js?v=c6c77dff-8:535 DELETE [URL]/index.php/apps/bookmarks/bookmark 503 (Service Unavailable)
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:535
e.exports @ bookmarks.main.js?v=c6c77dff-8:535
e.exports @ bookmarks.main.js?v=c6c77dff-8:933
Promise.then (async)
c.request @ bookmarks.main.js?v=c6c77dff-8:933
r.forEach.c.<computed> @ bookmarks.main.js?v=c6c77dff-8:933
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:535
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:1
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:529
u.dispatch @ bookmarks.main.js?v=c6c77dff-8:535
dispatch @ bookmarks.main.js?v=c6c77dff-8:529
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
c @ bookmarks.main.js?v=c6c77dff-8:93
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:93
forEach.e.<computed> @ bookmarks.main.js?v=c6c77dff-8:93
xt @ bookmarks.main.js?v=c6c77dff-8:504
a @ bookmarks.main.js?v=c6c77dff-8:504
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
onClearData @ bookmarks.main.js?v=c6c77dff-8:504
ze @ bookmarks.main.js?v=c6c77dff-8:7
n @ bookmarks.main.js?v=c6c77dff-8:7
o._wrapper @ bookmarks.main.js?v=c6c77dff-8:7
bookmarks.main.js?v=c6c77dff-8:1 Error: Request failed with status code 503
at e.exports (bookmarks.main.js?v=c6c77dff-8:535)
at e.exports (bookmarks.main.js?v=c6c77dff-8:933)
at XMLHttpRequest.p.onreadystatechange (bookmarks.main.js?v=c6c77dff-8:535)
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:1
Promise.catch (async)
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:1
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:529
u.dispatch @ bookmarks.main.js?v=c6c77dff-8:535
dispatch @ bookmarks.main.js?v=c6c77dff-8:529
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
c @ bookmarks.main.js?v=c6c77dff-8:93
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:93
forEach.e.<computed> @ bookmarks.main.js?v=c6c77dff-8:93
xt @ bookmarks.main.js?v=c6c77dff-8:504
a @ bookmarks.main.js?v=c6c77dff-8:504
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:504
onClearData @ bookmarks.main.js?v=c6c77dff-8:504
ze @ bookmarks.main.js?v=c6c77dff-8:7
n @ bookmarks.main.js?v=c6c77dff-8:7
o._wrapper @ bookmarks.main.js?v=c6c77dff-8:7
bookmarks.main.js?v=c6c77dff-8:7 Error: Request failed with status code 503
at e.exports (bookmarks.main.js?v=c6c77dff-8:535)
at e.exports (bookmarks.main.js?v=c6c77dff-8:933)
at XMLHttpRequest.p.onreadystatechange (bookmarks.main.js?v=c6c77dff-8:535)
He @ bookmarks.main.js?v=c6c77dff-8:7
Ye @ bookmarks.main.js?v=c6c77dff-8:7
Re @ bookmarks.main.js?v=c6c77dff-8:7
(anonymous) @ bookmarks.main.js?v=c6c77dff-8:7
Promise.catch (async)
ze @ bookmarks.main.js?v=c6c77dff-8:7
n @ bookmarks.main.js?v=c6c77dff-8:7
o._wrapper @ bookmarks.main.js?v=c6c77dff-8:7
Request URL: [URL]/apps/bookmarks/bookmark
Request Method: DELETE
Status Code: 503 Service Unavailable
Remote Address: [IP-ADDRESS]
Referrer Policy: no-referrer
Connection: keep-alive
Content-Length: 428
Content-Type: text/html; charset=iso-8859-1
Date: Fri, 21 Aug 2020 13:57:33 GMT
Referrer-Policy: no-referrer
Server: nginx
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Robots-Tag: none
X-XSS-Protection: 1; mode=block
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Cookie: [...]
DNT: 1
Host: [HOST]
Origin: [URL]
requesttoken: ttbsyL0xgExQSOjMfoEDNjhnntiu+f3kD+4gzyL9/mM=:w+bcrvheuCZhPp2hDeV1TmoE14j8wcS0Zp9mqliHnVY=
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
<html><head>
<title>503 Service Unavailable</title>
</head><body>
<h1>Service Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
<p>Additionally, a 503 Service Unavailable
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
Mmh, perhaps try talking to your hoster about increasing the reverse proxy timeout. This looks like the reverse proxy is cutting the connection before any response comes back.
Mmh, perhaps try talking to your hoster about increasing the reverse proxy timeout
Answer from Webo hosting:
Reverse proxy timeout is set at 21600. Did the operation took around 1 hour before you got timeout?
This is then also not the root cause... :-/
Heureka! I found the bug. In certain situations a folder loop can be created in the bookmarks app (ie. a folder is both parent and child of another folder). If there is a bookmark inside that folder loop that also resides in a different folder, deleting that bookmark will not work, because the folder loop causes an infinite loop.
When will there be a release including this issue?