Prevent cached signed global IDs from expiring #12783
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
馃帺 What? Why?
By default Decidim's cell caches are set to never expire:
decidim/decidim-core/lib/decidim/view_model.rb
Lines 93 to 95 in acbb110
This default is applied unless the individual cell overrides this value. There are only few cells that override this value.
This also applies to comment forms where signed global IDs are written to the output to refer to the comments. If the comment form has been cached more than 1 month ago, as the cache never expires, the commenting for that page is broken as the global signed ID has expired. Even worse, the user will not get any error message on what might have gone wrong because the commenting endpoint responds with HTTP 404, leaving them totally confused why commenting is not working (as well as leaving the maintainers of the instance confused why it's not working).
This fixes the issue by setting the global signed IDs to never expire. This can be changed in individual implementations by changing the value of
config.global_id.expires_in
within the instance configuration.Testing