PATCH: Unexpected behavior when exaile accidentally gets duplicate items in the DB
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Exaile |
Fix Released
|
Medium
|
Dustin Spicuzza |
Bug Description
If, for some reason, exaile accidentally writes two identical entries to the track database, it will fail to load any data that is saved after that point, and will always load the older track data from the DB, while saving to the newest track data entry in the DB.
My fix elects to use the first (probably older) entry found in the DB, since the other entry happened because of some kind of error. It's also not clear what the ramifications of multiple track databases would be -- but I think this still does the right thing.
I did not try to determine what caused the DB to be corrupted, I presume that it happened during plugin development.
I've pushed this change to my dj_improvements branch also.
Related branches
- Adam Olsen: Approve
-
Diff: 5692 lines (+2891/-448)68 files modifieddata/ui/preferences/playback.ui (+35/-2)
data/ui/preferences/playlists.ui (+15/-0)
plugins/audioscrobbler/__init__.py (+5/-5)
plugins/awn/__init__.py (+7/-7)
plugins/bpm/PLUGININFO (+4/-0)
plugins/bpm/__init__.py (+258/-0)
plugins/bpm/bpm.glade (+49/-0)
plugins/currentsong/__init__.py (+7/-7)
plugins/desktopcover/__init__.py (+10/-2)
plugins/equalizer/__init__.py (+2/-2)
plugins/grouptagger/PLUGININFO (+4/-0)
plugins/grouptagger/__init__.py (+273/-0)
plugins/grouptagger/gt_common.py (+297/-0)
plugins/grouptagger/gt_widgets.py (+406/-0)
plugins/history/PLUGININFO (+4/-0)
plugins/history/__init__.py (+311/-0)
plugins/history/history_preferences.py (+52/-0)
plugins/history/history_preferences.ui (+70/-0)
plugins/karaoke/__init__.py (+2/-2)
plugins/lyricsviewer/__init__.py (+6/-6)
plugins/minimode/controls.py (+11/-11)
plugins/moodbar/__init__.py (+4/-4)
plugins/mpris/mpris_player.py (+2/-2)
plugins/notify/__init__.py (+3/-3)
plugins/notifyosd/__init__.py (+8/-8)
plugins/replaygain/__init__.py (+4/-4)
plugins/streamripper/__init__.py (+4/-4)
xl/formatter.py (+8/-8)
xl/metadata/__init__.py (+11/-1)
xl/metadata/mp4.py (+6/-0)
xl/player/__init__.py (+2/-2)
xl/player/_base.py (+10/-9)
xl/player/adapters.py (+18/-14)
xl/player/engine_normal.py (+9/-6)
xl/player/engine_unified.py (+24/-20)
xl/player/pipe.py (+47/-41)
xl/player/queue.py (+20/-5)
xl/playlist.py (+16/-6)
xl/trax/search.py (+30/-2)
xl/trax/track.py (+7/-1)
xl/trax/trackdb.py (+9/-2)
xlgui/__init__.py (+2/-2)
xlgui/cover.py (+16/-13)
xlgui/main.py (+17/-10)
xlgui/menu.py (+5/-0)
xlgui/oldmenu.py (+24/-2)
xlgui/osd.py (+1/-1)
xlgui/panel/collection.py (+2/-2)
xlgui/panel/files.py (+2/-2)
xlgui/panel/flatplaylist.py (+4/-4)
xlgui/panel/playlists.py (+142/-33)
xlgui/panel/radio.py (+4/-4)
xlgui/playlist.py (+12/-11)
xlgui/preferences/__init__.py (+8/-11)
xlgui/preferences/playback.py (+8/-0)
xlgui/preferences/playlists.py (+4/-0)
xlgui/properties.py (+11/-1)
xlgui/tray.py (+14/-14)
xlgui/widgets/dialogs.py (+335/-7)
xlgui/widgets/filter.py (+10/-0)
xlgui/widgets/info.py (+19/-15)
xlgui/widgets/menuitems.py (+7/-8)
xlgui/widgets/notebook.py (+1/-0)
xlgui/widgets/playback.py (+58/-58)
xlgui/widgets/playlist.py (+75/-28)
xlgui/widgets/playlist_columns.py (+5/-4)
xlgui/widgets/queue.py (+12/-10)
xlgui/widgets/rating.py (+23/-22)
Changed in exaile: | |
assignee: | nobody → Dustin Spicuzza (dustin-virtualroadside) |
importance: | Undecided → Medium |
milestone: | none → 0.3.3.0 |
status: | New → Fix Committed |
Changed in exaile: | |
status: | Fix Committed → Fix Released |