text icon indicating copy to clipboard operation
text copied to clipboard

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

Open rhclayto opened this issue 9 months ago • 6 comments

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)

rhclayto avatar Apr 08 '25 00:04 rhclayto

Anybody have any idea what is going on? The problem remains for me, I can't use the app without manually clearing oc_filecache entries for the .yjs files.

rhclayto avatar Apr 14 '25 22:04 rhclayto

We do not have special logic in text that would handle the deletion of the actual file and filecache entry, that is done in the API that server provides and taht we use. Can you reproduce this with a new file still and check if there is any error reported before you reopen the file? If the cronjob succeeds to delete the file but keeps the filecache entry I would expect an error to be reported from that.

juliusknorr avatar Apr 16 '25 07:04 juliusknorr

Note for existing files I'd suggest to run occ files:scan-app-data text/ to make sure the text appdata directory is consistent with its filecache entries again.

juliusknorr avatar Apr 16 '25 07:04 juliusknorr

Thanks for your response.

As a test:

  1. Cleared oc_filecache & ran occ files:scan-app-data text/
  2. Created a new .md file & typed a couple words into it. A .yjs file & an oc_filecache entry were created for it.
  3. Let it sit in the browser for half an hour. No problems.
  4. Created another .md file & typed a few words into it. A .yjs file & an oc_filecache entry were created for it.
  5. Let it sit in the browser for half an hour
  6. While sitting with the second .md file open in the browser, the .yjs file for the first .md was deleted (by cron I guess). The oc_filecache entry remained.
  7. No error messages were logged during this time.
  8. Tried to open the first .md file, experienced the behavior described in my original post. The following was logged, & continues to be logged every so often as long as the .md file is open in the browser:
Apr 16 15:13:36 nextcloud Nextcloud[8783]: {"reqId":"rOi2k8xeqotoh8MhGr8D","level":3,"time":"2025-04-16T21:13:36+00:00","remoteAddr":"192.168.1.111","user":"h","app":"PHP","method":"POST","url":"/apps/text/session/520451/push","message":"file_get_contents(/nextclouddata/appdata_ocsnbdij9dnj/text/documents/520451.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 16 15:13:36 nextcloud Nextcloud[8783]: {"reqId":"rOi2k8xeqotoh8MhGr8D","level":3,"time":"2025-04-16T21:13:36+00:00","remoteAddr":"192.168.1.111","user":"h","app":"index","method":"POST","url":"/apps/text/session/520451/push","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/DocumentService.php\",\"line\":239,\"function\":\"getContent\",\"class\":\"OC\\\\Files\\\\SimpleFS\\\\SimpleFile\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/ApiService.php\",\"line\":185,\"function\":\"addStep\",\"class\":\"OCA\\\\Text\\\\Service\\\\DocumentService\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Controller/SessionController.php\",\"line\":62,\"function\":\"push\",\"class\":\"OCA\\\\Text\\\\Service\\\\ApiService\",\"type\":\"->\",\"args\":[\"*** sensitive parameters replaced ***\"]},{\"file\":\"/nextcloud/lib/private/AppFramework/Http/Dispatcher.php\",\"line\":200,\"function\":\"push\",\"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"}

Weird.

rhclayto avatar Apr 16 '25 21:04 rhclayto

I find these in the logs when I set loglevel to 0 (debug) when I move from one document to another. 'Dirty table reads.' I don't know if it's related:

Apr 16 15:55:30 nextcloud Nextcloud[832]: {"reqId":"yuH1uYwHEBN34V0mylo7","level":0,"time":"2025-04-16T21:55:30+00:00","remoteAddr":"192.168.1.111","user":"h","app":"no app in context","method":"POST","url":"/apps/text/session/520457/close","message":"{\"Exception\":\"Exception\",\"Message\":\"dirty table reads: SELECT `s`.`id` FROM `*PREFIX*text_sessions` `s` LEFT JOIN `*PREFIX*text_steps` `st` ON `st`.`session_id` = `s`.`id` WHERE (`last_contact` < :dcValue1) AND (`st`.`id` IS NULL) AND (`s`.`document_id` = :dcValue2)\",\"Code\":0,\"Trace\":[{\"file\":\"/nextcloud/lib/private/DB/ConnectionAdapter.php\",\"line\":50,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\Connection\",\"type\":\"->\"},{\"file\":\"/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php\",\"line\":289,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\ConnectionAdapter\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Db/SessionMapper.php\",\"line\":123,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\QueryBuilder\\\\QueryBuilder\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/SessionService.php\",\"line\":139,\"function\":\"deleteInactiveWithoutSteps\",\"class\":\"OCA\\\\Text\\\\Db\\\\SessionMapper\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/ApiService.php\",\"line\":163,\"function\":\"removeInactiveSessionsWithoutSteps\",\"class\":\"OCA\\\\Text\\\\Service\\\\SessionService\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Controller/SessionController.php\",\"line\":52,\"function\":\"close\",\"class\":\"OCA\\\\Text\\\\Service\\\\ApiService\",\"type\":\"->\",\"args\":[\"*** sensitive parameters replaced ***\"]},{\"file\":\"/nextcloud/lib/private/AppFramework/Http/Dispatcher.php\",\"line\":200,\"function\":\"close\",\"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/DB/Connection.php\",\"Line\":406,\"message\":\"dirty table reads: SELECT `s`.`id` FROM `*PREFIX*text_sessions` `s` LEFT JOIN `*PREFIX*text_steps` `st` ON `st`.`session_id` = `s`.`id` WHERE (`last_contact` < :dcValue1) AND (`st`.`id` IS NULL) AND (`s`.`document_id` = :dcValue2)\",\"tables\":[\"oc_text_sessions\"],\"reads\":[\"oc_text_sessions\",\"oc_text_steps\"],\"exception\":{},\"CustomMessage\":\"dirty table reads: SELECT `s`.`id` FROM `*PREFIX*text_sessions` `s` LEFT JOIN `*PREFIX*text_steps` `st` ON `st`.`session_id` = `s`.`id` WHERE (`last_contact` < :dcValue1) AND (`st`.`id` IS NULL) AND (`s`.`document_id` = :dcValue2)\"}","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.2.1"}
Apr 16 15:55:30 nextcloud Nextcloud[832]: {"reqId":"yuH1uYwHEBN34V0mylo7","level":0,"time":"2025-04-16T21:55:30+00:00","remoteAddr":"192.168.1.111","user":"h","app":"no app in context","method":"POST","url":"/apps/text/session/520457/close","message":"{\"Exception\":\"Exception\",\"Message\":\"dirty table reads: SELECT `id`, `color`, `document_id`, `last_awareness_message`, `last_contact`, `user_id`, `guest_name` FROM `*PREFIX*text_sessions` WHERE (`document_id` = :dcValue1) AND (`last_contact` > :dcValue2)\",\"Code\":0,\"Trace\":[{\"file\":\"/nextcloud/lib/private/DB/ConnectionAdapter.php\",\"line\":50,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\Connection\",\"type\":\"->\"},{\"file\":\"/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php\",\"line\":289,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\ConnectionAdapter\",\"type\":\"->\"},{\"file\":\"/nextcloud/lib/public/AppFramework/Db/QBMapper.php\",\"line\":329,\"function\":\"executeQuery\",\"class\":\"OC\\\\DB\\\\QueryBuilder\\\\QueryBuilder\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Db/SessionMapper.php\",\"line\":94,\"function\":\"findEntities\",\"class\":\"OCP\\\\AppFramework\\\\Db\\\\QBMapper\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/SessionService.php\",\"line\":114,\"function\":\"findAllActive\",\"class\":\"OCA\\\\Text\\\\Db\\\\SessionMapper\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Service/ApiService.php\",\"line\":164,\"function\":\"getActiveSessions\",\"class\":\"OCA\\\\Text\\\\Service\\\\SessionService\",\"type\":\"->\"},{\"file\":\"/nextcloud/apps/text/lib/Controller/SessionController.php\",\"line\":52,\"function\":\"close\",\"class\":\"OCA\\\\Text\\\\Service\\\\ApiService\",\"type\":\"->\",\"args\":[\"*** sensitive parameters replaced ***\"]},{\"file\":\"/nextcloud/lib/private/AppFramework/Http/Dispatcher.php\",\"line\":200,\"function\":\"close\",\"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/DB/Connection.php\",\"Line\":406,\"message\":\"dirty table reads: SELECT `id`, `color`, `document_id`, `last_awareness_message`, `last_contact`, `user_id`, `guest_name` FROM `*PREFIX*text_sessions` WHERE (`document_id` = :dcValue1) AND (`last_contact` > :dcValue2)\",\"tables\":[\"oc_text_sessions\"],\"reads\":[\"oc_text_sessions\"],\"exception\":{},\"CustomMessage\":\"dirty table reads: SELECT `id`, `color`, `document_id`, `last_awareness_message`, `last_contact`, `user_id`, `guest_name` FROM `*PREFIX*text_sessions` WHERE (`document_id` = :dcValue1) AND (`last_contact` > :dcValue2)\"}","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0","version":"31.0.2.1"}

rhclayto avatar Apr 16 '25 22:04 rhclayto

Next test. Created two .md files. Immediately closed them so they were not in the editor. Let them sit. Both .yjs files were deleted by cron, but both oc_filecache entries remain. Same 'Document could not be loaded' error for both files.

rhclayto avatar Apr 16 '25 22:04 rhclayto