A delegation is a token that the origin system grants the caching volume to ensure that the caching volume can serve read requests without the need for validating the data with the origin volume. Delegations are used only in certain situations.
When the FlexCache volume retrieves data from a file on the origin volume, the origin volume provides a delegation for that file to the FlexCache volume. The FlexCache volume retains the delegation until the origin volume revokes the delegation before the particular file gets modified. After the data is modified, the FlexCache volume must fetch the data before serving it to clients.
If multiple caching volumes have delegations for a particular file, then all the delegations are revoked before the file is updated.
Note: You can use the lock status -p flexcache command to view the FlexCache delegations granted by the storage system.
Delegations can cause a performance decrease for writes to the origin volume, depending on the number of FlexCache volumes that are holding delegations for the file being modified.
The following list outlines situations when delegations cannot be used to guarantee that an object has not changed:
- Objects other than regular files: Directories, symbolic links, and other objects that are not regular files have no delegations.
- Origin volumes that are SnapMirror destinations: If the origin volume is a SnapMirror destination, delegations are not used.
- When the FlexCache volume is taken offline: All the delegations given to the volume are destroyed.
- When connectivity is lost: If connectivity is lost between the origin and caching systems, then delegations are considered to be revoked.
- When the maximum number of delegations is reached: If the origin volume cannot store all of its delegations, it might revoke an existing delegation to accommodate a new one.
- When the origin volume has a resource constraint: The origin volume reclaims some delegations from all its FlexCache volumes.