diff options
Diffstat (limited to 'modules/field/field.info.class.inc')
-rw-r--r-- | modules/field/field.info.class.inc | 26 |
1 files changed, 21 insertions, 5 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]; } |