cache
publication
rules
weakreference
Developer
Legacy
Cache on WeakReference
Question
When you have weakreference field on a content (for instance related events on a publication, and the events should display the publication) and you change the weakreference to another event the cache is not flushed. Scenario:
- flush cache site
- reference event1 on my publication1
- publish
- go to event1 page and my publication1 is displayed (Ok)
- reference event2 on my publication1
- publish
- go to event1 page and my publication isn't displayed (Ok)
- go to event2 page and my publication isn't displayed (Ko)
Answer
The problem is the second source is already cached and a publication of the weakreference don't flush the cache because the cacheDependeny is set to late (just on the first call of the weakreference).
A solution for this would be to add a simple drools rule to flush the related cache like:
rule "flush related event cache"
salience 25
when
A node is published
- the node has the type jnt:publication
then
> if (node.getNode().getProperty("relatedEvent") != null ) {
> org.jahia.services.cache.CacheHelper.flushOutputCachesForPath(node.getNode().getProperty("relatedEvent").getNode().getPath(), true);
> }
end