Rhythmbox doesn't notice old files have left, only seems to notice new files.
Submitted by J.B. Nicholson
Link to original bug (#667512)
Description
I'm running Rhythmbox 2.90.1 on Ubuntu GNU/Linux 11.10 AMD64. Version 2.90.1 is not in the version number list on GNOME's Bugzilla for Rhythmbox.
My music library is on a SAN mounted via SMB and available to Rhythmbox (RB) via GVFS:
smb://workgroup;jbn@nas./music/
RB sees all of the music files in that directory and subdirectories of that directory. I happen to have a lot of FLAC files in there.
But RB doesn't notice when I rename a file or change a file's tags. Even if I quit RB, make changes (by renaming & changing tags), and then restart RB, RB sees only the new files and does nothing to eliminate the old files. Some changes I make are too large for me to tell RB about by selecting "Remove" on all of the tracks.
Here's a set of steps to reproduce:
- Make a directory (on an SMB volume mounted via GVFS), place a FLAC file in that directory, and start RB.
- Set RB to use that directory as the music library directory. Let RB scan the directory. RB should show you the FLAC file metadata.
- Make sure RB's preference "Watch for new files" is checked.
- Quit RB.
- Use some tag editing program to change the title, author, and other tags RB reads.
- Rename the FLAC file.
- Start RB.
Actual result: RB shows two tracks: the old track and the edited track.
Expected result: RB should only show the new edited track. RB should confirm the tracks listed in its DB and the renamed track entry should be deleted automatically by RB; the edited track(s) with the same path names should updated in RB's DB.
Even after repeated RB restarts, RB doesn't update its database and retains old invalid track data. Trying to play the renamed tracks fails, RB quickly skips past them and plays the next playable track in the track list.
I don't understand why RB isn't checking for the existence of stuff it believes to be there and updating those tracks as well as checking for new stuff. When I use Nautilus with the aforementioned SMB URL, I don't see the old files. ls doesn't see them in the appropriate subdir of ~/.gvfs/ either. So I imagine RB would not see the old data were RB to look for the old data RB believes is already there (data listed in ~/.local/share/rhythmbox/rhythmdb.xml).
I can only imagine that my library being mounted via SMB is a red herring -- not relevant to this issue because that directory is exposed to all apps like a local directory. I mention the SMB mount because it's how I get my music data and in case it is relevant, you will want to know that.
I know I can remove RB's database and let RB rebuild from scratch, but in my understanding that doesn't properly address the issue of RB not automatically clearing out obsolete data.
Is this issue because inotify (or a workalike) doesn't work on remote-mounted volumes and RB has no other means to check for updates?
If I've said something above that misunderstands the logic of RB updating its DB, or something else, please do correct me.