diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc
index 02b3c9c..dea2fd4 100644
--- a/modules/field/field.info.inc
+++ b/modules/field/field.info.inc
@@ -223,7 +223,11 @@ function _field_info_collate_types($reset = FALSE) {
       }
       drupal_alter('field_storage_info', $info['storage types']);
 
-      cache_set("field_info_types:$langcode", $info, 'cache_field');
+      // Set the cache if we can acquire a lock.
+      if (lock_acquire("field_info_types:$langcode")) {
+        cache_set("field_info_types:$langcode", $info, 'cache_field');
+        lock_release("field_info_types:$langcode");
+      }
     }
   }
 
