Skip to content

Wallabag iOS app deletes articles on server during sync #447

@bcutter

Description

@bcutter

While opening the app on the iPhone and syncing (which takes ages, see #185 (comment)) - not sure if I let it sync or switched to another app meanwhile for a few seconds - out of nowhere afterwards I noticed the unread count dropped significantly. I checked it in detail and this is what happened:

  • All articles: 16.030 before -> 15.897 afterwards -> lost 133 articles in total
  • Unread articles: 217 before -> 95 afterwards -> lost 122 unread articles

I checked the prod.log and found this. Is it of any help?

[2025-06-24T08:25:54.687316+00:00] request.INFO: Matched route "api_delete_entries". {"route":"api_delete_entries","route_parameters":{"_route":"api_delete_entries","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::deleteEntriesAction","entry":"0"},"request_uri":"https://my.wallabag.domain/api/entries/0","method":"DELETE"} []
[2025-06-24T08:25:54.702931+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Wallabag\CoreBundle\Entity\Entry object not found by the @ParamConverter annotation." at /var/www/wallabag/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php line 107 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Wallabag\\CoreBundle\\Entity\\Entry object not found by the @ParamConverter annotation. at /var/www/wallabag/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php:107)"} []
[2025-06-24T08:26:07.428292+00:00] request.INFO: Matched route "api_delete_entries". {"route":"api_delete_entries","route_parameters":{"_route":"api_delete_entries","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::deleteEntriesAction","entry":"13571"},"request_uri":"https://my.wallabag.domain/api/entries/13571","method":"DELETE"} []
[2025-06-24T08:26:07.436245+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Wallabag\CoreBundle\Entity\Entry object not found by the @ParamConverter annotation." at /var/www/wallabag/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php line 107 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Wallabag\\CoreBundle\\Entity\\Entry object not found by the @ParamConverter annotation. at /var/www/wallabag/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php:107)"} []
[2025-06-24T08:27:27.567346+00:00] request.INFO: Matched route "api_get_entries". {"route":"api_get_entries","route_parameters":{"_route":"api_get_entries","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::getEntriesAction"},"request_uri":"https://my.wallabag.domain/api/entries.json?order=desc&page=319&perPage=50","method":"GET"} []
[2025-06-24T08:27:27.586368+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Page Not Found" at /var/www/wallabag/vendor/babdev/pagerfanta-bundle/src/EventListener/ConvertNotValidCurrentPageToNotFoundListener.php line 16 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Page Not Found at /var/www/wallabag/vendor/babdev/pagerfanta-bundle/src/EventListener/ConvertNotValidCurrentPageToNotFoundListener.php:16)\n[previous exception] [object] (Pagerfanta\\Exception\\OutOfRangeCurrentPageException(code: 0): Page \"319\" does not exist. The currentPage must be inferior to \"318\" at /var/www/wallabag/vendor/pagerfanta/core/Pagerfanta.php:221)"} []
[2025-06-24T08:28:57.424368+00:00] request.INFO: Matched route "api_get_entries". {"route":"api_get_entries","route_parameters":{"_route":"api_get_entries","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\EntryRestController::getEntriesAction"},"request_uri":"https://my.wallabag.domain/api/entries.json?order=desc&page=319&perPage=50","method":"GET"} []
[2025-06-24T08:28:57.433191+00:00] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Page Not Found" at /var/www/wallabag/vendor/babdev/pagerfanta-bundle/src/EventListener/ConvertNotValidCurrentPageToNotFoundListener.php line 16 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Page Not Found at /var/www/wallabag/vendor/babdev/pagerfanta-bundle/src/EventListener/ConvertNotValidCurrentPageToNotFoundListener.php:16)\n[previous exception] [object] (Pagerfanta\\Exception\\OutOfRangeCurrentPageException(code: 0): Page \"319\" does not exist. The currentPage must be inferior to \"318\" at /var/www/wallabag/vendor/pagerfanta/core/Pagerfanta.php:221)"} []
[2025-06-24T08:29:23.669722+00:00] request.INFO: Matched route "api_get_tags". {"route":"api_get_tags","route_parameters":{"_route":"api_get_tags","_format":"json","_controller":"Wallabag\\ApiBundle\\Controller\\TagRestController::getTagsAction"},"request_uri":"https://my.wallabag.domain/api/tags.json","method":"GET"} []

Anyway, I had to restore a database backup.

Then all clients complained about "the access token provided is invalid" so first I thought about purging the content of tables wallabag_oauth2_access_tokens, wallabag_oauth2_refresh_tokens and wallabag_oauth2_auth_codes too, then re-authenticate on every client (every endpoint and every app).

After a 2nd thought and a bit of reading how oauth2 works luckily I decided to just wait until the access tokens invalidate and the clients request a new one - roughly one hour because of fos_oauth_server_access_token_lifetime: 3600 in parameters.yml. Quite frustrating experience.

Now I'm thinking of just deleting and never using the official Wallabag iOS app again. Edit: Deleted. Far away from stable, too many issues (#185 (comment) rendered it useless anyway), this one likely was one too much.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions