-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2025-01-29 - Joplin Android extremely slow after deleting many conflicts #11745
Comments
Addendum: |
Workaround started: [logs removed] |
Perhaps these new error logs will help. [logs removed] |
This is a refactoring change (change made while looking into laurent22#11745).
The "A change was recorded for a note that has been deleted" logs are likely the most relevant. |
Workaround not really successful. What I found very positive about this test is that I was able to continue working normally with my Windows and Linux apps during the test, because there seems to be no longer any ‘exclusive lock’. Three days after starting this test, I realise that it has not been so successful that I can work properly with the Android app again. Many normal functions such as searching, opening or saving a note take far too long. Changes saved in Android either do not arrive in Windows apps at all or only with an extreme delay. [logs removed] |
Second workaround started. Back to square one with NextCloud. There I don't have the option to share notes with my people anymore, but I also don't have the complexity of key management that you guys are trying to do in Joplin Cloud for sharing encrypted notes. I exported a JEX export with the Windows app on my Win10 guest system from my Joplin Teams main account and imported it into a new profile in my NextCloud. I also use E2EE there. So far, it looks good. Since there is no longer an ‘exclusive lock’, I have already started synchronising this data to a new profile in my Android and Windows apps on my new Win11 guest system. This is what the synchronisation status of my sending Windows app on my Win10 guest system looked like a few minutes ago:
|
Update: The application slowness may be related to the Sample message
|
The first upload of my JEX export to my NextCloud should be complete soon. Details
Anhänge Im Konflikt: 0 |
I wonder if, if my production data works as expected with NextCloud, I should delete all shares between my Joplin Cloud accounts, then export a JEX for each account, delete all my data in JoplinCloud and switch off the E2EE for all my Joplin Cloud accounts. After that, I could start over with a new import of all my JEX exports with a new E2EE, set up the shares again, and see if the problem occurs again. |
I currently suspect that the slowness is caused by a large number of "file not found" logs from this line:
The file not found error is coming from here: joplin/packages/lib/models/Resource.ts Line 203 in 67d1dd3
Here are two things I can try to do:
Edited: Grammar. |
Note: If this was caused by logging a large amount of data, this may be fixed (by #11771, which is not in a mobile release yet). |
Status: Fortunately, I can finally work productively again since I got my productive Joplin data back into my Managed NextCloud via JEX import. The fact that there seems to be no longer an ‘exclusive lock’ also helps a lot. I use my productive Joplin data simultaneously from two Android apps, four Windows apps and two Linux apps. I have been patient and waited until all elements had been downloaded from the NextCloud and decrypted each time a new Joplin app was added. With the Android apps, this took several days each time. Although all object IDs change with each JEX import, I now have a manual workaround to avoid this problem. My problem with changing object IDs is that I enter these IDs as ‘External Link’ into other tools such as my calendars and this information is no longer valid after a JEX import because all IDs change. My manual workaround is to copy the corresponding ‘External Link’ information into the content of notes. Thanks to Joplin's wonderful search function, this note can then be found by searching for this ID, even if the current object ID has changed again due to a JEX import. Some of my notes have already had four or more object IDs copied into their content in this way. Now I even write the date as timestamp in the note. Assumptions: My Joplin data in the Joplin Cloud had somehow become logically inconsistent. Maybe because I tried to fix conflicts manually, under the mistaken assumption that object IDs never change. But that can't be the only cause of the various problems. I also noticed that the problems often occurred with the notes in a folder whose contents were shared with other Joplin Cloud IDs. I was particularly surprised that I received many messages in connection with Joplin Cloud that I was sometimes unable to decrypt my own notes. Somehow this probably has to do with the presumably very complex key management that has to be carried out by Joplin in connection with the Joplin Cloud and the sharing of folders. It could be that many or all logical inconsistencies were removed when the JEX export from the Joplin cloud and the subsequent JEX import into my NextCloud were carried out, precisely because all object IDs change in the process. Since the JEX import into my Next Cloud, I no longer have any such problems and I have not experienced any data loss so far. Plan: I don't want to touch the data of my various Joplin Cloud IDs again until new versions of the Android app, the Windows app and the Linux app are available that have a chance of working well enough. Then I would proceed as follows: After that, I see two alternative approaches for how to proceed. The reason for this distinction is that unfortunately there is no function to delete all data in the Joplin Cloud in a controlled manner if you, as the owner of the data, want to do so. Approach I: Keep my existing Joplin Cloud IDs But maybe that's not a good idea at all. The following approach would probably be more reliable: Approach II: Working with new Joplin Cloud IDs and cancelling the old IDs: |
Thank you for providing a status update! I've left a few comments. @laurent22 may further insights.
Related note: The Android 3.3.3 pre-release includes #11771, which may resolve this issue.
One option here might be @laurent22's Victor plugin should clear all data, then sync. This may be an alternative to "Approach I". I'm linking a related (unmerged) commit that should change this behavior: personalizedrefrigerator@341cd69. This commit updates the JEX and RAW import behavior to change item IDs only if the IDs are already in use. I hope to do further testing before converting this commit to a pull request. |
Thank you for your informative response to my status report! Yes, the Victor plugin seems to offer exactly the functionality I was looking for. I think that with it, I can do without my Approach II. I also find your commit exciting. Fortunately, I'm not under any time pressure to return to the Joplin Cloud at the moment, so I can take my time to think about it and take care of my day-to-day activities with my current configuration. |
Note from a discussion with @laurent22 — preserving note IDs while importing from JEX might cause issues in other parts of the app and with sync, so we probably won't support this for now. |
understood |
Operating system
Android
Joplin version
Joplin Mobile 3.2.7 (prod, android)
Desktop version info
No response
Current behaviour
I recently had over 20,000 entries in the conflicts, a great many of them from notes whose data seems to be strangely corrupted.
These notes are or have been repeatedly displayed briefly as newly changed, even though I haven't touched them in a very long time, and could have repeatedly created new entries in conflicts.
My goal was to delete this impenetrable mass of over 20,000 conflicts in order to be able to better observe which conflicts were newly created.
My impression is that I have to delete the conflicts in each instance of my Windows and Android apps individually.
For the Windows apps, this deletion seems to have worked as expected so far.
Unfortunately, my Android app did not survive this procedure so well.
Since then, it has been extremely slow and - despite activating Caffeine - seems to be unable to cope with synchronisation.
Normal searches and normal editing seem to work if you're very patient and wait a minute after each save, which normally seems to take a second.
In the error log, I find messages like
01-29T07:39:28: NoteEditor: CodeMirror error error:Cannot read properties of undefined (reading 'addEventListener'): {} 01-29T07:33:43: Cannot execute MATCH query: ": malformed MATCH expression: [*"] (code 1 SQLITE_ERROR[1]) 01-29T07:31:39: Cannot execute MATCH query: ": malformed MATCH expression: [*"] (code 1 SQLITE_ERROR[1]) 01-28T23:19:01: NoteEditor: CodeMirror error error:Cannot read properties of undefined (reading 'addEventListener'): {} 01-28T19:43:23: NoteEditor: CodeMirror error error:Cannot read properties of undefined (reading 'addEventListener'): {} 01-28T19:20:58: NoteEditor: CodeMirror error error:Cannot read properties of undefined (reading 'addEventListener'): {} 01-28T19:06:35: ResourceService::indexNoteResources: A change was recorded for a note that has been deleted: ef981822027149d5bd3c81bdfaed2ffa 01-28T19:06:35: ResourceService::indexNoteResources: A change was recorded for a note that has been deleted: eaeb74e8fd1c4f00832deab9bb093b4b 01-28T19:06:35: ResourceService::indexNoteResources: A change was recorded for a note that has been deleted: de577d8b226846bfb4ba6a9ffcb7ad71 01-28T19:06:35: ResourceService::indexNoteResources: A change was recorded for a note that has been deleted: fc810da2bdfb4b4b8f4e7e20c939e04b 01-28T19:06:35: ResourceService::indexNoteResources: A change was recorded for a note that has been deleted: 481aafad98744d4fad004215c664e9ff
... a.s.o.
Expected behaviour
All searches, saving processes, etc. in the Android app work as quickly and smoothly as before the conflict data was deleted.
Logs
The text was updated successfully, but these errors were encountered: