private void RecoverNextPool()
 {
     foreach (var actionList in actions.Values)
     {
         bool startRecovery = false;
         foreach (var action in actionList)
         {
             VdiOpenDatabaseAction openDatabaseAction = action as VdiOpenDatabaseAction;
             if (openDatabaseAction != null && !openDatabaseAction.IsCompleted)
             {
                 startRecovery = true;
                 log.DebugFormat("Open metadata database ({0})", openDatabaseAction.Vdi.Name());
                 openDatabaseAction.RunAsync();
                 break;
             }
         }
         if (startRecovery)
         {
             break; // start recovery of first "unrecovered" pool (unrecovered = !openDatabaseAction.IsCompleted)
         }
     }
 }