Maintaining functionality during component failures is presented. During
application registration, a recovery engine generates a recovery plan for
the application. The recovery plan includes recovery actions that
correspond to each component that the application intends to access. When
an application encounters an unavailable component, the recovery engine
provides a recovery action to the application which instructs the
application how to proceed, such as accessing a backup component. The
recovery engine tracks unavailable components and, when a subsequent
application registers that intends to use an unavailable component, the
recovery engine provides the subsequent application a recovery action,
instructing the subsequent application how to proceed.