Skip to content

.yjs Files Deleted, oc_filecache Entries Remain, Files Become Inaccesible Through Text App #7089

@rhclayto

Description

@rhclayto

Describe the bug
Some time after using the text app to edit .md files, they become inaccesible, for reasons mysterious to me. Looking at the logs & at the filesystem, it appears that .yjs files corresponding to the .md files edited by the Text app are being automatically deleted, but entries in the oc_filecache database table are not deleted. When I try to open the .md file again in the Text app, to edit or view, it sees the entry in the oc_filecache table & tries to load the .yjs file, but it's not there anymore, & so I get the Nextcloud error: "file_get_contents(/nextclouddata/appdata_ocsnbdij9dnj/text/documents/498774.yjs): Failed to open stream: No such file or directory at /nextcloud/lib/private/Files/Storage/Local.php#294.

I don't know if this is a bug or if I'm doing something wrong, but this is all taking place just by attempting to use the text app to edit .md files. Any ideas?

To Reproduce
Steps to reproduce the behavior:

  1. Edit an .md file using the web UI.
  2. A .yjs file is created, & an entry in the oc_filecache table is created.
  3. Browse away from the text editor, & wait a while.
  4. The .yjs file is deleted automatically (cron?), but the entry in the oc_filecache table remains.
  5. Try to view the .md file.
  6. Receive the message: Document could not be loaded. Please check your internet connection. Reconnect
  7. Click the reconnect button.
  8. In the browser console,: XHR PUT https://cloud.example.com/apps/text/session/498771/create HTTP/2 500
  9. In the Nextcloud logs, see below.
  10. The warning toast reappears, but this time with no text or 'Reconnect' button, just the yellow warning icon. The .md file is not displayed.
  11. It continues to work in the Android Notes app, & the file is available via the Nextcloud Windows desktop app, & .md files can be downloaded or editied using the 'edit externally' feature..
  12. Delete the entry for the file in oc_filecache, & the .md file becomes accesible & editable again, until the next time the .yjs file is deleted.

Expected behavior
Behavior as designed.

Server details:

  • Nextcloud version: 31.0.2.1
  • PHP Version: 8.4
  • Database: Mariadb 10.11.11-0+deb12u1
  • OS: Debian bookworm

Client details:

  • OS: Windows
  • Browser: Firefox, Chrome (latest)
  • Browser version: latest, for both
  • Device: Windows
Logs

Nextcloud log (data/nextcloud.log)

Apr 07 17:53:19 nextcloud Nextcloud[2463]: {"reqId":"YLyTUFXoZxU2AASNsTWA","level":1,"time":"2025-04-07T23:53:19+00:00","remoteAddr":"192.168.1.111","user":"me","app":"text","method":"PUT","url":"/apps/text/session/498771/create","message":"Keep previous document of 498771","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.2.1","data":{"app":"text"}}
Apr 07 17:53:19 nextcloud Nextcloud[2463]: {"reqId":"YLyTUFXoZxU2AASNsTWA","level":3,"time":"2025-04-07T23:53:19+00:00","remoteAddr":"192.168.1.111","user":"me","app":"PHP","method":"PUT","url":"/apps/text/session/498771/create","message":"file_get_contents(/nextclouddata/appdata_ocsnbdij9dnj/text/documents/498771.yjs): Failed to open stream: No such file or directory at /nextcloud/lib/private/Files/Storage/Local.php#294","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.2.1","data":{"app":"PHP"}}
Apr 07 17:53:19 nextcloud Nextcloud[2463]: {"reqId":"YLyTUFXoZxU2AASNsTWA","level":3,"time":"2025-04-07T23:53:19+00:00","remoteAddr":"192.168.1.111","user":"me","app":"index","method":"PUT","url":"/apps/text/session/498771/create","message":"{\"Exception\":\"OCP\\\\Files\\\\GenericFileException\",\"Message\":\"\",\"Code\":0,\"Trace\":[{\"file\":\"/nextcloud/lib/private/Files/SimpleFS/SimpleFile.php\",\"line\":55,\"function\":\"getContent\",\"class\":\"OC\\\\Files\\\\Node\\\\File\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/ApiService.php\",\"line\":128,\"function\":\"getContent\",\"class\":\"OC\\\\Files\\\\SimpleFS\\\\SimpleFile\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Controller/SessionController.php\",\"line\":46,\"function\":\"create\",\"class\":\"OCA\\\\Text\\\\Service\\\\ApiService\",\"type\":\"->\",\"args\":[\"*** sensitive parameters replaced ***\"]},{\"file\":\"/nextcloud/lib/private/AppFramework/Http/Dispatcher.php\",\"line\":200,\"function\":\"create\",\"class\":\"OCA\\\\Text\\\\Controller\\\\SessionController\",\"type\":\"->\",\"args\":[\"*** sensitive parameters replaced ***\"]},{\"file\":\"/nextcloud/lib/private/AppFramework/Http/Dispatcher.php\",\"line\":114,\"function\":\"executeController\",\"class\":\"OC\\\\AppFramework\\\\Http\\\\Dispatcher\",\"type\":\"->\"},{\"file\":\"/nextcloud/lib/private/AppFramework/App.php\",\"line\":161,\"function\":\"dispatch\",\"class\":\"OC\\\\AppFramework\\\\Http\\\\Dispatcher\",\"type\":\"->\"},{\"file\":\"/nextcloud/lib/private/Route/Router.php\",\"line\":307,\"function\":\"main\",\"class\":\"OC\\\\AppFramework\\\\App\",\"type\":\"::\"},{\"file\":\"/nextcloud/lib/base.php\",\"line\":1025,\"function\":\"match\",\"class\":\"OC\\\\Route\\\\Router\",\"type\":\"->\"},{\"file\":\"/nextcloud/index.php\",\"line\":24,\"function\":\"handleRequest\",\"class\":\"OC\",\"type\":\"::\"}],\"File\":\"/nextcloud/lib/private/Files/Node/File.php\",\"Line\":35,\"message\":\"\",\"exception\":{},\"CustomMessage\":\"Exception thrown: OCP\\\\Files\\\\GenericFileException\"}","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.2.1"}

Browser log

XHR PUT https://cloud.example.com/apps/text/session/498771/create HTTP/2 500 

[ERROR] text: Unexpected Error "Failed to apply steps. Retry!" 
Object { app: "text", uid: "me", level: 1, error: Error }
​
app: "text"
​
error: Error: Failed to apply steps. Retry!
​​
cause: Object { message: "Request failed with status code 403", name: "AxiosError", code: "ERR_BAD_REQUEST", … }
​​
columnNumber: 44107
​​
fileName: "https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs"
​​
lineNumber: 2
​​
message: "Failed to apply steps. Retry!"
​​
stack: "sendStepsNow/<@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:44107\npromise callback*sendStepsNow@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:43432\nsendSteps/<@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:42873\nsetInterval handler*sendSteps@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:42825\nsendStep@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:42779\nsend@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:46884\nzs@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:27312\nXc/this._awarenessUpdateHandler@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:28561\nemit/<@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:371942\nemit@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:371930\nsetLocalState@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:19045\nsetLocalStateField@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:19168\nu@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:467665\nupdatePluginViews@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:182729\nupdateStateInner@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:181597\nupdateState@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:180237\ndispatchTransaction@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:255801\ndispatch@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:184892\nblur@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:243795\nsd/<@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:142982\nsomeProp@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:183320\nsd@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:142926\nTC/e.input.eventHandlers[n]@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:142323\nEventListener.handleEvent*TC@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:142265\nfk@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:179656\ncreateView@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:254566\nnU@https://cloud.example.com/apps/text/js/RichText-CfL10uBw.chunk.mjs:2:251460\nwo@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:115956\nonLoaded@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:435269\nyo/emit/<@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:30551\nemit@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:30534\nemit@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:46163\nopen@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:42269\nasync*p@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:46762\nCo@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:26267\nconnect@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:30125\nXc@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:28864\nf1@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:47558\ninitSession@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:432081\nmounted@https://cloud.example.com/apps/text/js/Editor-Bojumers.chunk.mjs:2:430551\nlt@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:24720\nnt@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:33599\ninsert@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:37030\nKt@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:57670\nfc/<@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:59026\nUa/t.prototype._update@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:31203\nr@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:31950\nt.prototype.get@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:28155\nt@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:28072\nVa@https://cloud.example.com/apps/text/js/vue.runtime.esm-DuKaSI2H.chunk.mjs:1:32053\n"

Nextcloud config:

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "cloud.example.com",
            "blahblahblah.onion"
        ],
        "version": "31.0.2.1",
        "dbtype": "mysql",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": 3306,
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "app_install_overwrite": [
            "bookmarks",
            "apporder",
            "duplicatefinder",
            "files_markdown",
            "video_converter"
        ],
        "default_phone_region": "US",
        "auth.webauthn.enabled": false,
        "hide_login_form": true,
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "forwarded_for_headers": [
            "HTTP_X_FORWARDED",
            "HTTP_FORWARDED_FOR"
        ],
        "maintenance": false,
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "memcache.local": "\\OC\\Memcache\\Redis",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "filelocking.enabled": "true",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 6378,
            "dbindex": 7,
            "timeout": 0,
            "user": "default",
            "password": "***REMOVED SENSITIVE VALUE***"
        },
        "theme": "",
        "overwrite.cli.url": "https:\/\/cloud.example.com",
        "overwritehost": "cloud.example.com",
        "overwriteprotocol": "https",
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "25",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauthtype": "PLAIN",
        "loglevel": 1,
        "logfile": "",
        "log_type": "syslog",
        "syslog_tag": "Nextcloud",
        "user_oidc": {
            "single_logout": true
        },
        "allow_user_to_change_display_name": false,
        "lost_password_link": "disabled",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "apps_paths": [
            {
                "path": "\/var\/www\/nextcloud\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/nextcloud\/apps2",
                "url": "\/apps2",
                "writable": true
            }
        ],
        "enforce_theme": "",
        "maintenance_window_start": 1,
        "enable_previews": true,
        "enabledPreviewProviders": [
            "OC\\Preview\\BMP",
            "OC\\Preview\\GIF",
            "OC\\Preview\\JPEG",
            "OC\\Preview\\Krita",
            "OC\\Preview\\MarkDown",
            "OC\\Preview\\MP3",
            "OC\\Preview\\OpenDocument",
            "OC\\Preview\\PNG",
            "OC\\Preview\\TXT",
            "OC\\Preview\\XBitmap",
            "OC\\Preview\\Imaginary",
            "OC\\Preview\\ImaginaryPDF",
            "OC\\Preview\\Movie"
        ],
        "preview_imaginary_url": "***REMOVED SENSITIVE VALUE***",
        "preview_imaginary_key": "***REMOVED SENSITIVE VALUE***",
        "allow_local_remote_servers": true
    }
}

####Nextcloud add-ons

Enabled:
  - activity: 4.0.0
  - announcementcenter: 7.1.0
  - app_api: 5.0.2
  - bookmarks: 15.1.0
  - calendar: 5.2.1
  - circles: 31.0.0
  - cloud_federation_api: 1.14.0
  - comments: 1.21.0
  - contacts: 7.0.4
  - contactsinteraction: 1.12.0
  - dashboard: 7.11.0
  - dav: 1.33.0
  - external: 6.0.2
  - federatedfilesharing: 1.21.0
  - files: 2.3.1
  - files_automatedtagging: 2.0.0
  - files_downloadlimit: 4.0.0
  - files_fulltextsearch: 31.0.0
  - files_pdfviewer: 4.0.0
  - files_reminders: 1.4.0
  - files_sharing: 1.23.1
  - files_trashbin: 1.21.0
  - files_versions: 1.24.0
  - fileslibreofficeedit: 2.0.1
  - fulltextsearch: 31.0.0
  - fulltextsearch_elasticsearch: 31.0.0
  - lookup_server_connector: 1.19.0
  - mail: 4.3.4
  - metadata: 0.22.0
  - notes: 4.11.0
  - notifications: 4.0.0
  - notify_push: 1.0.0
  - oauth2: 1.19.1
  - photos: 4.0.0-dev.1
  - previewgenerator: 5.8.0
  - privacy: 3.0.0
  - profile: 1.0.0
  - provisioning_api: 1.21.0
  - quota_warning: 1.21.0
  - recommendations: 4.0.0
  - related_resources: 2.0.0
  - richdocuments: 8.6.4
  - settings: 1.14.0
  - sharebymail: 1.21.0
  - side_menu: 4.1.1
  - systemtags: 1.21.1
  - tasks: 0.16.1
  - text: 5.0.0
  - theming: 2.6.1
  - theming_customcss: 1.18.0
  - twofactor_backupcodes: 1.20.0
  - unroundedcorners: 1.1.4
  - updatenotification: 1.21.0
  - user_oidc: 7.1.0
  - user_status: 1.11.0
  - viewer: 4.0.0
  - webhook_listeners: 1.2.0
  - workflow_script: 2.0.0
  - workflowengine: 2.13.0
Disabled:
  - admin_audit: 1.21.0
  - bruteforcesettings: 4.0.0 (installed 2.3.0)
  - dav_push: 0.0.2 (installed 0.0.2)
  - duplicatefinder: 1.6.0 (installed 1.6.0)
  - encryption: 2.19.0
  - externalpassword: 1.1.2 (installed 1.1.2)
  - federation: 1.21.0 (installed 1.13.0)
  - files_antivirus: 6.0.0 (installed 6.0.0)
  - files_external: 1.23.0 (installed 1.22.0)
  - files_markdown: 2.4.1 (installed 2.4.1)
  - files_rightclick: 0.15.1 (installed 1.6.0)
  - files_texteditor: 2.15.1 (installed 2.15.1)
  - firstrunwizard: 4.0.0 (installed 2.12.0)
  - logreader: 4.0.0 (installed 2.8.0)
  - nextcloud_announcements: 3.0.0 (installed 1.12.0)
  - oidc_login: 3.2.2 (installed 3.2.2)
  - password_policy: 3.0.0 (installed 1.13.0)
  - serverinfo: 3.0.0 (installed 1.13.0)
  - support: 3.0.0 (installed 1.6.0)
  - survey_client: 3.0.0 (installed 1.9.0)
  - suspicious_login: 9.0.1
  - twofactor_nextcloud_notification: 5.0.0
  - twofactor_totp: 13.0.0-dev.0
  - user_ldap: 1.22.0 (installed 1.20.0)
  - video_converter: 1.0.6 (installed 1.0.6)
  - weather_status: 1.11.0 (installed 1.3.0)
  - workflow_ocr: 1.31.0 (installed 1.31.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions