When using Memcached as a caching mechanism, I cannot get Cache Actions to invalidate the panel panes that I ask it to.

The rule will trigger and end up calling cache_actions_rules_cache_clear_cache($display), which in turn calls cache_clear_all($cid, 'cache', TRUE); in memcache.inc. It eventually calls memcache_wildcards(), due to the TRUE parameter above.

What happens in memcache_wildcards() is hard for me to understand and I haven't finished stepping through that function yet, but I can definitely say that it does not invalidate the cid that is passed to it.

I don't know the reasoning behind calling cache_clear_all() in wildcard-mode, but I would like to learn more about that ..?

If I switch to standard MySQL-caching behaviour, the rule invalidates the cache just fine.

How can I help debug this further, please?

PS: Filing as a bug, because that's how it seems to me.

Comments

achton’s picture

This may be beyond scope of this issue, but there is a good explanation of wildcard flushing here: http://drupal.org/node/937744

fabsor’s picture

Category: bug » feature

When views stores it's cache entries, it adds the view name and the display id as the cache id, but it also appends things like page number, arguments that has been passed to it, info about exposed filters etc. to the cache id. This means that the cache id is not exactly equal to view_name:display_id, and we can't just clear the cache based on that, since it doesn't match exactly.

This will require a wildcard lookup.