From 304da11c95bfdd72cba7a688eb0ab9b21e77c45b Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Mon, 9 Sep 2013 18:39:09 +0200
Subject: [PATCH] Issue #2081609 by yched: Fixed field purge should bail out on
 unknown entity types.

---
 core/modules/field/field.purge.inc | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/core/modules/field/field.purge.inc b/core/modules/field/field.purge.inc
index e38f57fc3c6f..5ab55ef23726 100644
--- a/core/modules/field/field.purge.inc
+++ b/core/modules/field/field.purge.inc
@@ -78,6 +78,13 @@ function field_purge_batch($batch_size) {
   foreach ($instances as $instance) {
     $entity_type = $instance['entity_type'];
 
+    // We cannot purge anything if the entity type is unknown (e.g. the
+    // providing module was uninstalled).
+    // @todo Revisit after https://drupal.org/node/2080823.
+    if (!isset($info[$entity_type])) {
+      continue;
+    }
+
     // EntityFieldQuery currently fails on conditions on comment bundle.
     // Remove when http://drupal.org/node/731724 is fixed.
     if ($entity_type == 'comment') {
@@ -117,6 +124,14 @@ function field_purge_batch($batch_size) {
   $deleted_fields = Drupal::state()->get('field.field.deleted') ?: array();
   foreach ($deleted_fields as $field) {
     $field = new Field($field);
+
+    // We cannot purge anything if the entity type is unknown (e.g. the
+    // providing module was uninstalled).
+    // @todo Revisit after https://drupal.org/node/2080823.
+    if (!isset($info[$field->entity_type])) {
+      continue;
+    }
+
     $instances = field_read_instances(array('field_id' => $field['uuid']), array('include_deleted' => 1));
     if (empty($instances)) {
       field_purge_field($field);
-- 
GitLab