-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
slow startup esp with lots of skin widgets due to addon menu's caching removed on startup #24110
Comments
@djay please provide all information requested by the issue template, esp. debug log and exact Kodi version! As of now we do not even know which Kodi version you are talking about. |
@ksooo fixed |
No debug log? |
I can do better than a log. Here is a plugin that does a hack to get round this bug https://github.com/nkestrel/kodi.service.plugin.listcachekeeper
As you can see kodi is cleaning these cache files in startup, preventing kodi from a fast startup. |
and here is the code that clears these cached lists out on startup xbmc/xbmc/settings/SettingsComponent.cpp Line 394 in 49ba279
|
actually I've noticed that some skin widgets do not end up creating cache files on disk when set to a addons directory. Only when you go to the addon manually is the cache file created. So to fix this problem additional changes would be needed by skin widgets to generate those cache's and use them, as well as the caches not being wiped on startup. This would then result in the desired fast startup. Not that sure on the code but I think what needs to be changed to use a cache is
I think the main part of the code does the caching for viewing the addons is xbmc/xbmc/windows/GUIMediaWindow.cpp Line 730 in a9076fe
|
@jmarshallnz what do you think of the idea of caching lists from plugins to disc in json-rpc if they are slow? perhaps with an extra flag if you want to ensure its fresh? |
Bug report
Describe the bug
When starting kodi, any addon menus that were cached to disc (via the cacheToDisc=True param in the addon), are not used on startup. This leads to the user having to wait a long time if they have skin with many widgets which point to addon menus. This is particularly bad with a lot of widgets and on a lower end machine that can't handle so many python instances all loading at the same time (1 per widget).
It also seems like json-rpc calls used by widgets don't cache at all which is unexpected.
Expected Behavior
Kodi should startup fast with content quickly displayed in all widgets even if out of date , letting the user choose to wait for more updates or use the widgets as is.
Actual Behavior
Kodi calls all the addons menu at the same time no matter how many of them there are and doesn't matter if there is a cached menu on disk or how old it is. This can leave a page of widgets with spinning waiting indicators for many a long period, in some cases over a minute.
If there is limited memory, then this can often lead to crashing or memory managers killing the process due to too many addons loading at once
Possible Fix
Kodi should use the cached menu, regardless of how old initially so startup is fast. and then queue the actual call to the addon menu and refresh the widget once the menu has been cached again, thus limited the number of addons running simultaneously and letting the user browse some content even if its stale. Many lists don't change that often so in many cases the list would be unchanged.
To Reproduce
Steps to reproduce the behavior:
Debuglog
Screenshots
Here are some links or screenshots to help explain the problem:
Additional context or screenshots (if appropriate)
Here is some additional context or explanation that might help:
None
Your Environment
Used Operating system:
Android
iOS
tvOS
Linux
macOS
Windows
Windows UWP
Operating system version/name: all
Kodi version: 18.0-Leia - latest
The text was updated successfully, but these errors were encountered: