When using the dgInfo command to obtain information about the DG, you may see the following information messages. Each plug
on a connection has two pieces of state information displayed together at the end of the line on which they are printed.
- CLEAN PROP
-
CLEAN PROP is the normal state for a graph that has been successfully evaluated.
It indicates that the plug value in the node's datablock is correct and that any successive changes to it (or values upstream
from it) are propagated to all plugs depending on it (e.g. downstream connections or affected outputs).
- DIRTY BLOCK
-
DIRTY BLOCK is the normal state for a plug whose upstream values have changed but no evaluation request has come through for that plug's
value.
DIRTY indicates that the current value of the plug held in the datablock may or may not be correct, depending on how the upstream
values affect it. Requesting it directly via a
getAttr command or indirectly via a request for values downstream of it will trigger a DG evaluation of all upstream plugs.
BLOCK is an optimization that prevents excessive dirty flag propagation when many values are changing, for example, a frame change
in an animated sequence. It means that any changes to values upstream from this plug will not send any further dirty messages
to downstream/affected plugs.
- DIRTY PROP
-
DIRTY PROP is a less common but still valid state for a plug whose upstream values have changed but no evaluation request has come through
for that plug's value.
Like the DIRTY BLOCK state, it triggers an evaluation when its value is requested.
Where it differs is that when another change comes through from an upstream plug, this plug again propagates the dirty message
to all downstream/affected plugs. You only see this state when the DG is uncertain that all downstream plugs were notified
of their dirty status the last time this plug was marked dirty (for example, if the dirty propagation was intercepted by a
node, or the graph connections changed since the last dirty message).
- CLEAN BLOCK
-
CLEAN BLOCK should never be seen in a valid DG. This indicates that while the value of the plug is clean (in other words, valid) it will
not propagate a dirty state when its value changes. Therefore, downstream nodes will not be notified that the graph is changing
and they will not be evaluated properly. Recovering from this invalid state requires entering the command
dgdirty -a to mark everything dirty and restart proper evaluation. (This command is the equivalent of
CTL+ALT+DEL in the DG world.)