summaryrefslogtreecommitdiff
path: root/modules/field
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field')
-rw-r--r--modules/field/field.info.class.inc26
-rw-r--r--modules/field/field.info.inc6
2 files changed, 26 insertions, 6 deletions
diff --git a/modules/field/field.info.class.inc b/modules/field/field.info.class.inc
index 3b89898fb..f4f1f6300 100644
--- a/modules/field/field.info.class.inc
+++ b/modules/field/field.info.class.inc
@@ -146,7 +146,10 @@ class FieldInfo {
// Save in "static" and persistent caches.
$this->fieldMap = $map;
- cache_set('field_info:field_map', $map, 'cache_field');
+ if (lock_acquire('field_info:field_map')) {
+ cache_set('field_info:field_map', $map, 'cache_field');
+ lock_release('field_info:field_map');
+ }
return $map;
}
@@ -174,7 +177,10 @@ class FieldInfo {
}
// Store in persistent cache.
- cache_set('field_info:fields', $this->fieldsById, 'cache_field');
+ if (lock_acquire('field_info:fields')) {
+ cache_set('field_info:fields', $this->fieldsById, 'cache_field');
+ lock_release('field_info:fields');
+ }
}
// Fill the name/ID map.
@@ -231,7 +237,10 @@ class FieldInfo {
}
// Store in persistent cache.
- cache_set('field_info:instances', $this->bundleInstances, 'cache_field');
+ if (lock_acquire('field_info:instances')) {
+ cache_set('field_info:instances', $this->bundleInstances, 'cache_field');
+ lock_release('field_info:instances');
+ }
}
$this->loadedAllInstances = TRUE;
@@ -419,7 +428,11 @@ class FieldInfo {
foreach ($instances as $instance) {
$cache['fields'][] = $this->fieldsById[$instance['field_id']];
}
- cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field');
+
+ if (lock_acquire("field_info:bundle:$entity_type:$bundle")) {
+ cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field');
+ lock_release("field_info:bundle:$entity_type:$bundle");
+ }
return $instances;
}
@@ -460,7 +473,10 @@ class FieldInfo {
// Store in the 'static' and persistent caches.
$this->bundleExtraFields[$entity_type][$bundle] = $info;
- cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field');
+ if (lock_acquire("field_info:bundle_extra:$entity_type:$bundle")) {
+ cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field');
+ lock_release("field_info:bundle_extra:$entity_type:$bundle");
+ }
return $this->bundleExtraFields[$entity_type][$bundle];
}
diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc
index 02b3c9ca4..dea2fd4fb 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");
+ }
}
}