This section covers some details of the caching mechanism which are not discussed in the topics section. If you are developing plugins and want to modify the caching behavior of your classes, we recommend you read that section first.
There are several methods which the internal classes of AiiDA use to control the caching mechanism:
On the level of the generic
is_valid_cache()property determines whether a particular node can be used as a cache. This is used for example to disable caching from failed calculations.
Node classes have a
_cachableattribute, which can be set to
Falseto completely switch off caching for nodes of that class. This avoids performing queries for the hash altogether.
Process.is_valid_cache, passing the node itself. This can be used in
Processsubclasses (e.g. in calculation plugins) to implement custom ways of invalidating the cache.
As discussed in the topic section, nodes which can have
RETURN links cannot be cached.
This is enforced on two levels:
_store_from_cachemethod, which is used to “clone” an existing node, will raise an error if the existing node has any
RETURNlinks. This extra safe-guard prevents cases where a user might incorrectly override the
_cachableproperty on a