Are there any known bugs that could cause annotations to get lost?
A couple of times I've looked at an old song only to find that the annotations have completely disappeared. I don't have a reproducer.
Some of my songs are really nothing but annotations--I'll often start a song with a pdf of blank staff paper and use the annotation editor to write a chart. So I definitely notice when the annotations diseappear.
Any suggestions?
(Also, any advice on selectively restoring those annotations from backups?)
The annotations are stored in the database, so it really shouldn't be possible for you to lose the annotations without something extremely bad occurring. While it is possible to hide annotations on the main song display, they should never be hidden in the annotations editor itself. If you go to Settings->About, what version of MobileSheetsPro are you using? Do you ever use the companion application to make changes to your library, or do you make all your changes in the tablet app?
As far as restoring the annotations, it's not really easy at all to do that through a backup file. About the only thing that comes to mind (if you didn't want to lose your current library) is a multi-part process:
1) Back up your current library under Settings->Backup and Restore->Backup Library.
2) Restore your library from the old backup file.
3) Export the song containing the annotations by long pressing and select Share->Export as .msf.
4) Restore your newer library using the backup file you created
5) Import the .msf file you generated and update your existing song (or delete the song and recreate it using the .msf file)
In theory that should work. I'm not sure if there is another way to do this. If you have a second device, you could restore the library on that and export the song, and then just transfer the .msf file to the other tablet to update the song.
Mike
"While it is possible to hide annotations on the main song display, they should never be hidden in the annotations editor itself."
Just to be sure, I opened the editor on a song with missing annotations. They still weren't there.
"If you go to Settings->About, what version of MobileSheetsPro are you using?"
It says "2.4.9 from Google Play". This is on a Samsung Galaxy Tab S3 running Android 8.0.0, for what it's worth.
"Do you ever use the companion application to make changes to your library, or do you make all your changes in the tablet app?"
All changes are made in the tablet app.
For a while I was also making occasional changes on my phone, and using "Sync Library" to sync with the tablet (via Google Drive). The first time I noticed a song with missing annotations was after I started using sync, so I stopped on the theory that it might be to blame. I think I've seen one more since I stopped, though.
"As far as restoring the annotations"
I'll give your suggestions a try, thanks!
If you use the library sync feature, you have control over whether it is a two-way sync or one-way, and you also control what type of information is merged, such as annotations. If you merged everything, performed a two-way merge, and set the merge behavior to "Use song that was modified last", then it's possible the song on the phone had a newer last modified timestamp and it was used to replace the song on the tablet. If the song on the phone didn't have annotations it could replace the song on the tablet and clear the annotations. Is it possible that is what happened? Or were the libraries pretty much identical before the sync?
Thanks,
Mike
"If you have a second device, you could restore the library on that and export the song, and then just transfer the .msf file to the other tablet to update the song."
I did this, and it worked great, thanks!
Also, I had to go to an older backup than expected to get a good copy of the song. So I think the data loss may have happened after I started using the "Sync Library" feature.
Yes, I was using "Two-way sync" and "Use data from the song that was modified last". So I think that's the most likely explanation, though I think I would have rarely or never modified songs from my phone (I usually used it read-only, doing real work from the tablet).
Out of curiosity--f I restore from a backup, would the restored songs be considered last-modified as of the time of the restore, or would their last-modified times be copied from the backup?
The song last modified timestamp would be whatever is in the backup. The file modified timestamps may or may not match what is in the backup. The reason is that on some devices, the last modified timestamp can't be changed. Even though my code asks the file system to change the last modified timestamp, it won't do it. So then every file that is extracted from the backup will have a new last modified timestamp that won't match what is saved in the database itself. In practice, this doesn't have much of an impact, but when songs are loaded for the first time after restoring a backup, if the file's last modified timestamp doesn't match what is in the database, it will be scanned for changes. This is to support the scenario where a user has replaced the song's file on disk with a new version. There are some other complex scenarios where this could matter, like restoring a library backup file and then synchronizing to a cloud folder. This would cause the library sync to think all of the files on the tablet are newer even if that is not truly the case.
Mike