Now the sad news: I initially was meet with a number of crashes/errors.
- After/during the initial scan the database corrupted. All provided automatic restore operations failed. Restart in Safe mode does not close/restart the program half the time. If it does, it's unusable because I can't navigate to toolbar > File > Manage database... (a white popup appears, but no usable menu...probably due to my 200% DPI display setting?)
- When I remove all bookmarks under "Web" (Amazon.com, iHeart.com, Last.fm) I get a Application Error:
Code: Select all
Application throw an exception Exception EAccessViolation in module MediaMonkeyEngine.exe at 00A586D2. Access violation at address 00E586D2 in module 'MediaMonkeyEngine.exe'. Read of address 00000000.
- Often (seems to be when changing to next playlist item) I get another Application Error:
Code: Select all
Application throw an exception Could not retrieve data "SELECT Songs.* FROM Songs WHERE Songs.TrackType in (0,4,3) " : disk I/O error (10, 10)
- Last.fm communicates my credential tokens over normal http (port 80) while https (port 443) is available on audioscrobbler.com.
Point 2: after a restart of MediaMonkey all bookmarks return. If I delete all but Last.fm, there is no error?
Point 3: probably related to point 1. I use a portable installation in a folder that's being synced to my NAS using Synology Drive Client (just like Google Drive/OneDrive). The problem seems to be related to MM closing filehandles after writing to MM5.db, giving Synology Drive Client the idea the file is free/available to sync/update (thus locking it), just when MM wants to access it again. Or is MM keeping the filehandle open and is Synology just intrusive? Is there a hidden setting that can keep the MM5.db file open? Similar software using sqlite databases (like photo management software Digikam) does not share this problematic behaviour. Of course I can exclude the MM5.db file from synchronisation, but that doesn't leave much of a use-case for using a portable application.
Point 4: I noticed this because I run a whitelist based firewall. This was easily changed to "https" in .\Scripts\lastFM\lastFMTools.js:8 without negative consequences. The firewall set-up could also be a cause for the error in point 2. Is MM gracefully handling (partial) communication failures?
As I see MM is now based on Node.js, would it be much work to slip in another database connector library and use a remote database (Postgres or MariaDB)? Unsupported and just for tech users of course? Shouldn't have to be too unfriendly for users as it can be offered as a very simple Docker recipe/image and a connection string in the settings. I also read about this MediaMonkey Server development with excitement, but I'm wondering what the advantages are over just a remote database. More reliable tracking of library filesystem changes than over SMB/NFS? Always present DLNA server? It has some pro's but is probably considerable more work.
Hope this report contributes to a even better MediaMonkey, keep up the good work!
