@evkamat I created this github issue for you: Broken Backups - possibly caused by terminating frozen JabRef · Issue #10026 · JabRef/jabref · GitHub Would be great to hear your feedback, once you tried the development version.
Thanks to the developers of JabRef!
(…gratitude is never enough for this nice free app:
long-life to open-source initiatives! : )
I still get the problem with JabRef 5.12.
My JabRef settings:
JabRef 5.12–2023-12-24–4233bad
Windows 11 10.0 amd64
Java 21.0.1
JavaFX 21.0.1+6
@GianlucaBaldassarre Please test again with 5.13 We improved this
With 5.13, after I copied the bib file to another name and then copied it back, the problem disappeared.
JabRef 5.13--2024-04-01--6bdcf63
Mac OS X 14.5 aarch64
Java 21.0.2
JavaFX 22+30
Maybe a little late with this comment, but if you have a backup of the “broken” library file, you could compare the “before” and “after” file with third party tools, such as Meld. Would be nice to find out what exactly was the difference in your case.
I am also getting this error, in Win 11, v5.14
The modifications are deletions - and I have the choice only to accept or deny, with no way to trace back the source of the deletion. It’s deleting about 2/3 of my library, and just scanning through the list, it seems to be the same references every time. I get no info about what the ‘external program’ is, or why this program would be deleting most of my references. However, if I close out the library it deletes all the modified files, even if I have denied changes multiple times. I’ve tried saving files to a new library, and it just saves the ones that aren’t being deleted.
I’ve been re-adding them from the bib files i pulled from mendeley, but at this point I have multiple new articles added directly from my browser plugin that are getting deleted too.
Please help-- this is disrupting my work pretty significantly and I don’t know what to do.
Adding more detail as i’ve done some more testing.
Here’s the version I’m on
JabRef 5.15–2024-07-10–1eb3493
Windows 11 10.0 amd64
Java 21.0.2
JavaFX 22.0.1+7
I created a copy of a small portion of my library, and changed the entry type to one of the custom entry types i set up in preferences. Those items are the ones that are being deleted, though I don’t know if it’s just changes to entry type that are causing it. Everything i’m importing to jabref is coming in as misc or article, even though they are entries from online database or web news articles, so i’m making a ton of changes starting with changing entry type so i can get the right reference detail in my bibilography.
when i try to save, this error bar appears. if i dismiss changes, it deletes any references i’ve made updates to.
when i review changes, i have to accept or deny each item individually. if i accept the refs are deleted. deny does nothing but the file saves and i get the error bar above again.
here’s the library, though i have no idea if it reflects the changes i’ve been making since it’s stuck in this error loop.
CaseStudyLibrary_test.bib (234.4 KB)
Sorry for the late response. First of all, before you try out anything I recommend you doing, please backup your library.
Now, I can think of a few things that are happening under the hood that could cause those symptomps.
1. The library is shared remotely
Do you store your .bib library file in onedrive or share it with other apps like rsync, syncthing, dropbox, etc.? If the remote library file is edited (and saved) and then synced with your local instance, it will trigger “the library has been modified by another program” notification.
2. Modification of the library file outside of JabRef while JabRef is running.
If you modify the library on your local instance outside of JabRef, e.g. with a file editor, while JabRef is running and accessing the file, this notification can emerge. By the way, this is a good way to test if JabRef’s external changes resolver is working correctly.
3. You have old backups that differ from your current library file
There is one possibility how backups can trigger this notification. Here is the how to reproduce:
- Have a library.
- Change something in the library.
- Wait until a backup has automatically been created by JabRef. You can check it by opening the backup folder.
- Close JabRef without saving (and hope that JabRef’s autosave hasn’t saved the file yet).
This lead to a situation where your backup (let’s call it A) is more “current” than your current library file (let’s call it B), which may trigger the “The library has been modified by another program” notification. Now, if you continue to work with your “old” library file B instead of the backup A and constantly deny the changes, adding some data to B, but eventually you accept the external changes from A to B, the act of accepting may lead to dataloss, because A has become more outdated than B.
I am just a little bit unsure, if a new backup wouldn’t overwrite the old backup eventually, thereby getting rid of the underlying cause for triggering the notification.
The best course of action for you would be to check the automatically created backups by JabRef, manually move them to another location on your file system (as backup) and then check, if the notification still shows up.
4. Custom entry types
I don’t know exactly, about this one. You say you created a “copy” of your library … where did you store that copy? Did you maybe cut the entries instead of doing a copy? E.g. ctrl+x instead of ctrl+c ? Maybe in combination with one of the other factors above this may be an additional trigger.
Additional notes
Please create a separate issue next time. While the symptom is similar, the root cause may be different. While there is a lot of knowledge here in this thread, it’s hard to keep up with it, because new people have to read through all the old data. It’s hard to mark this thread as “solved”, even if we solved one of the issues.
This is helpful. I think I’ve looked into each of these items. Here’s what i can tell you on your points below.
Sorry for the late response. First of all, before you try out anything I recommend you doing, please backup your library.
Now, I can think of a few things that are happening under the hood that could cause those symptomps.
1. The library is shared remotely
Do you store your .bib library file in onedrive or share it with other apps like rsync, syncthing, dropbox, etc.? If the remote library file is edited (and saved) and then synced with your local instance, it will trigger “the library has been modified by another program” notification.
I don’t save any docs locally, so everything goes to dedicated files on dropbox, though I have used the default location for backup files on my C drive. I’ll see if I can turn off automatic synching for the files on the dropbox side.
Modification of the library file outside of JabRef while JabRef is running.
If you modify the library on your local instance outside of JabRef, e.g. with a file editor, while JabRef is running and accessing the file, this notification can emerge. By the way, this is a good way to test if JabRef’s external changes resolver is working correctly.
I’ve only used the file editor (notepad++ specifically) to troubleshoot, so it’s not been open aside from that. I haven’t made any changes in it. The issue started before I ever even tried opening the file in notepad++ so I dont think this is driving it.
You have old backups that differ from your current library file
There is one possibility how backups can trigger this notification. Here is the how to reproduce:
- Have a library.
- Change something in the library.
- Wait until a backup has automatically been created by JabRef. You can check it by opening the backup folder.
- Close JabRef without saving (and hope that JabRef’s autosave hasn’t saved the file yet).
This lead to a situation where your backup (let’s call it A) is more “current” than your current library file (let’s call it B), which may trigger the “The library has been modified by another program” notification. Now, if you continue to work with your “old” library file B instead of the backup A and constantly deny the changes, adding some data to B, but eventually you > accept the external changes from A to B, the act of accepting may lead to dataloss, because A has become more outdated than B.
I am just a little bit unsure, if a new backup wouldn’t overwrite the old backup eventually, thereby getting rid of the underlying cause for triggering the notification.
The best course of action for you would be to check the automatically created backups by JabRef, manually move them to another location on your file system (as backup) and then check, if the notification still shows up.strong text
I’ve looked through the backup files, and they seem to be getting created pretty frequently. There’s a history of about 10 for my library, and they are preserving the deletions. I’ve tried going back to backup files and working from there, but it doesn’t seem to make a difference. I’ll plan on deleting all the backups to start fresh though just in case something went wonky.
4. Custom entry types
I don’t know exactly, about this one. You say you created a “copy” of your library … where did you store that copy? Did you maybe cut the entries instead of doing a copy? E.g. ctrl+x instead of ctrl+c ? Maybe in combination with one of the other factors above this may be an additional trigger.
The way i did the copy was to ‘save as’ in jabref with a new name, in the same folder as the original, and then removed the reference listings and groups in each file so that they each had unique references and groups. I had imported them based on project-specific groups so i did this by just deleting the group and all references with (without removing the saved files). I have tried making a test copy (again starting from my main copy and using save as menu within jabref) saved to my desktop and it still seems to have the same problem. When starting with a completely fresh library (with uploaded files from mendeley bibtex files) the problem only arises after I change an entry type, and only for entries changed to custom types. I’ve tried multiple new libraries and every time it saves properly until I change an entry type to one of my custom ones.