diff --git a/deploy.manager.inc b/deploy.manager.inc index 5f39f35..406dfbf 100644 --- a/deploy.manager.inc +++ b/deploy.manager.inc @@ -134,6 +134,11 @@ function deploy_manager_delete_from_plan($plan_name, $entity_type, $entity) { function deploy_manager_postprocess_operation($plan_name, $entity) { $plan = deploy_plan_load($plan_name); if (!empty($plan->aggregator_config['delete_post_deploy'])) { + list($entity_id, $revision_id) = entity_extract_ids($entity->__metadata['type'], $entity); + if (isset($_SESSION['deploy'][$plan_name][$entity->__metadata['type']][$entity_id]) && $_SESSION['deploy'][$plan_name][$entity->__metadata['type']][$entity_id] == FALSE) { + unset($_SESSION['deploy'][$plan_name][$entity->__metadata['type']][$entity_id]); + return; + } deploy_manager_delete_from_plan($plan->name, $entity->__metadata['type'], $entity); } } diff --git a/deploy.module b/deploy.module index 38d4bbf..48fa99b 100644 --- a/deploy.module +++ b/deploy.module @@ -358,7 +358,18 @@ function deploy_queue_worker_deploy($entity, &$context = NULL) { if ($plan && $endpoint) { $entities = array(array('type' => $entity->__metadata['type'], 'id' => $entity->__metadata['id'])); $iterator = deploy_iterator($entities, $plan); - $endpoint->deploy($entity->__metadata['deployment_key'], $iterator, $entity->__metadata['lock_name']); + try { + $endpoint->deploy($entity->__metadata['deployment_key'], $iterator, $entity->__metadata['lock_name']); + } + // The deployment failed, most probably because of missing dependencies. + catch (Exception $e) { + $entity_type = $entity->__metadata['type']; + list($entity_id, $revision_id) = entity_extract_ids($entity_type, $entity); + $revision_id = ($revision_id === NULL) ? 0 : $revision_id; + drupal_set_message(t('Deploying !entity_type !entity_id of revision !revision_id to deployment plan @plan failed.', array('!entity_type' => $entity_type, '!entity_id' => $entity_id, '!revision_id' => $revision_id, '@plan' => $entity->__metadata['plan_name'])), 'error'); + watchdog('deploy', 'Deploying !entity_type !entity_id of revision !revision_id to deployment plan @plan failed.', array('!entity_type' => $entity_type, '!entity_id' => $entity_id, '!revision_id' => $revision_id, '@plan' => $entity->__metadata['plan_name']), WATCHDOG_ERROR); + $_SESSION['deploy'][$entity->__metadata['plan_name']][$entity_type][$entity_id] = FALSE; + } } }