The caches for type code definitions and service permissions have been down ported from ICM 11.
The previous TypeCodeDefinitionLRUCache
has been replaced by a Guava-based cache. It has been applied to our implementation of the TypeCodeRegistry
, which previously did not directly rely on the cache. This change leads to a significant performance improvement as the TypeCodeDefinitions
are loaded from the database only once, then cached, and only reloaded from the database when the cache is cleared manually, by a job, or when the ICM is redeployed. This eliminates repetitive calls to the TYPECODEDEFINITION
table (e.g., to retrieve ProductLinks
) and reduces them to a single initial database call when first retrieving TypeCodeDefinitions
using the default TypeCodeRegistry
implementation.
The previous configuration property for TypeCodeDefinitionLRUCache
is still used, the Guava cache is initialized with initialCapacity
and maximumSize
provided by the following property:
intershop.cartridges.xcs.typecodedefinition.cache.size=<value>
A Guava-based cache has been applied to our implementation of ServiceConfigurationBORepository
. For each domain, it holds the service permissions that allow a service definition.
For more details about the Managed Service Framework, see Concept - Managed Service Framework.
In addition to clearing the cache manually, by a job, or by an ICM redeployment, a cache clear key of type ServicePermissionPOKey
is registered. Any ServicePermissionPOKey
will clear the entire cache. The cache can be configured using the following property:
intershop.caches.ServicePermissionPOByDomainAndAllowedCache.guava.config=initialCapacity=50,maximumSize=250,recordStats