HawkXP71 117 Posted 22 hours ago Posted 22 hours ago I have a plugin in mind, but in order to learn how to develop it, I have been essentially re-creating an existing plugin. Essentially I am re-creating the statistics plugin, and rather than storing everything in a XML configuration file, I am using an sqlite db I am having some weird failures. If anyone is up for a code review, it would be most appreciated. TIA Scott
softworkz 5364 Posted 14 hours ago Posted 14 hours ago 7 hours ago, HawkXP71 said: I have a plugin in mind, but in order to learn how to develop it, I have been essentially re-creating an existing plugin. Essentially I am re-creating the statistics plugin, and rather than storing everything in a XML configuration file, I am using an sqlite db I am having some weird failures. That's not a surprise. Plugins need to be self-contained. They cannot have any references of their own, because it's solely the plugin dll's code which is loaded into the Emby Server process, so whatever SQLite libraries you have (presumably) added to your plugin as nuget packages won't be looaded. Emby Server uses SQLite itself, but through customized libraries. Some of your code's references may get redirected to Emby's customized implementation which have different behavior than the ones you are probably developing against. This would exactly create something like "weird failures".
HawkXP71 117 Posted 4 hours ago Author Posted 4 hours ago 16 hours ago, Luke said: Where is the code? https://github.com/towel42-com/Statistics2026 on the AllStatistics branch
HawkXP71 117 Posted 4 hours ago Author Posted 4 hours ago 10 hours ago, softworkz said: That's not a surprise. Plugins need to be self-contained. They cannot have any references of their own, because it's solely the plugin dll's code which is loaded into the Emby Server process, so whatever SQLite libraries you have (presumably) added to your plugin as nuget packages won't be looaded. Emby Server uses SQLite itself, but through customized libraries. Some of your code's references may get redirected to Emby's customized implementation which have different behavior than the ones you are probably developing against. This would exactly create something like "weird failures". Unfortunately that makes sense Is there an exposed ISQLManager ???? Im using the same SQL interface used in the playback_reporting plugin
softworkz 5364 Posted 3 hours ago Posted 3 hours ago 6 minutes ago, HawkXP71 said: Unfortunately that makes sense Is there an exposed ISQLManager ???? Im using the same SQL interface used in the playback_reporting plugin I didn't mean to say it can't be done, that was just the most likely explanation. If the playback reporting plugin can do it, you should be able to do that as well. From a quick look: Downgrade System.Memory to 4.6.0 Remove Emby.ApiClient package (not needed, might contain conflicting types) Then start by trying to do the same what the playback_reporting plugin does
HawkXP71 117 Posted 1 hour ago Author Posted 1 hour ago 2 hours ago, softworkz said: I didn't mean to say it can't be done, that was just the most likely explanation. If the playback reporting plugin can do it, you should be able to do that as well. From a quick look: Downgrade System.Memory to 4.6.0 Remove Emby.ApiClient package (not needed, might contain conflicting types) Then start by trying to do the same what the playback_reporting plugin does Done as stated: <PackageReference Include="MediaBrowser.Server.Core" Version="4.8.0.27-beta" /> <PackageReference Include="SQLitePCL.pretty.core" Version="1.2.2" /> <PackageReference Include="System.Memory" Version="4.5.5" /> No difference. Have two sql calls, which randomly fail. with the following being reported 026-08-22 16:29:56.358 Debug App: Sqlite: 11 - database corruption at line 88897 of [17144570b0] 2026-08-22 16:29:56.358 Debug App: Sqlite: 11 - database corruption at line 88897 of [17144570b0] 2026-08-22 16:29:56.358 Debug App: Sqlite: 11 - statement aborts at 12: [SELECT DISTINCT StudioNames FROM Media WHERE IsEpisode AND StudioNames IS NOT NULL AND StudioNames IS NOT NULL AND StudioNames != ''] database disk image is malformed 2026-08-22 16:29:56.358 Debug App: Sqlite: 11 - statement aborts at 7: [SELECT COUNT(DISTINCT(PrimaryName)) FROM Media WHERE IsEpisode] database disk image is malformed Though I can run the exact queries at from the command line with no issues. Any thoughts? Is the best practice to not use SqlLite for large data extraction, analysis and reporting?
softworkz 5364 Posted 35 minutes ago Posted 35 minutes ago Is the database on the local file system or on a network location? Are multiple processes accessing the db at the same time? Are you reading/writing at the same time? Did you copy the db file without copiying other files (like .wal or .shm)? From cli (or SQLite Studio), run "PRAGMA integrity_check;" on the DB
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now