-
Notifications
You must be signed in to change notification settings - Fork 442
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
Cache is invalidated at each new release #1550
Comments
@vuntz :
If I e.g. create a new item with "Thunderbird", then all existing files in related collection's cache directory I've used to check:
|
Updating radicale to a new version on my setup (3.2.1 -> 3.2.2, for instance)
3.2.2. But it's been happening for every update for a while, I just hadn't investigated until now.
It happens only the first time a calendar is being "used" after the update (usually with a PROPFIND request). That first request triggers the cache invalidation (since the cache version is not what radicale expects) and the cache is re-created. Afterwards, the cache works fine. I've seen it with evolution, caldav-sync on android, standard iOS, etc. It's really 100% reproducable here. But you need to bump the version of radicale before testing. |
As an example of the first request for a calendar:
This calendar has 1377 items. The first PROPFIND request for another calendar with 2616 items took 738.828 seconds. |
@vuntz : understood now the situation, never watched for it so far. Touching the storage cache code for this "upgrade" scenario only sounds like an overkill for now, potentially it would be better to run a storage verification as post-ugrade task (anyhow usefull...) Can you check whether it would help after the upgrade? Check here for hints: |
At every update, radicale recreates the cache from scratch. It's a relatively slow process for my server (can be 5 minutes for one calendar, not sure if it should be that slow). But this got me wondering if we could avoid invalidating the cache like this?
The version of the cache depends on the versions of radicale / vobject / python-dateutil (see https://github.com/Kozea/Radicale/blob/master/radicale/storage/__init__.py#L41-L44). This is understandable due to the use of pickle. While radicale has no control over its dependencies, it does know when there are incompatible changes in radicale itself. Would it be acceptable to have an internal version for radicale instead of the package version? This would require some discipline to bump this whenever the internal structure changes, which may or may not be acceptable...
The text was updated successfully, but these errors were encountered: