Caching: implementation details¶
This section covers some details of the caching mechanism which are not discussed in the user guide. If you are developing a plugin and want to modify the caching behavior of your classes, we recommend you read this section first.
Disabling caching for WorkflowNode
¶
As discussed in the user guide, nodes which can have RETURN
links cannot be cached. This is enforced on two levels:
- The
_cachable
property is set toFalse
in theaiida.orm.nodes.process.ProcessNode
, and only re-enabled inaiida.orm.nodes.process.calculation.calcjob.CalcJobNode
andCalcFunctionNode
. This means that aWorkflowNode
will not be cached. - The
_store_from_cache
method, which is used to “clone” an existing node, will raise an error if the existing node has anyRETURN
links. This extra safe-guard prevents cases where a user might incorrectly override the_cachable
property on aWorkflowNode
subclass.