Reomve a @Cacheable that might not work (#2102)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -26,7 +26,7 @@ import org.springframework.context.annotation.Primary;
|
||||
/**
|
||||
* A configuration for configuring the spring {@link CacheManager} for specific multi-tenancy caching. The caches between
|
||||
* tenants must not interfere each other.
|
||||
*
|
||||
* <p/>
|
||||
* This is done by providing a special {@link TenancyCacheManager} which generates a cache name included the current tenant.
|
||||
*/
|
||||
@Configuration
|
||||
@@ -39,14 +39,14 @@ public class CacheAutoConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@Primary
|
||||
TenancyCacheManager cacheManager(@Qualifier("directCacheManager") final CacheManager directCacheManager,
|
||||
TenancyCacheManager cacheManager(
|
||||
@Qualifier("directCacheManager") final CacheManager directCacheManager,
|
||||
final TenantAware tenantAware) {
|
||||
return new TenantAwareCacheManager(directCacheManager, tenantAware);
|
||||
}
|
||||
|
||||
/**
|
||||
* A separate configuration of the direct cache manager for the
|
||||
* {@link TenantAwareCacheManager} that it can get overridden by another
|
||||
* A separate configuration of the direct cache manager for the {@link TenantAwareCacheManager} that it can get overridden by another
|
||||
* configuration.
|
||||
*/
|
||||
@Configuration
|
||||
@@ -54,10 +54,8 @@ public class CacheAutoConfiguration {
|
||||
static class DirectCacheManagerConfiguration {
|
||||
|
||||
/**
|
||||
* @return the direct cache manager to access without tenant aware
|
||||
* check, cause in sometimes it's necessary to access the cache
|
||||
* directly without having the current tenant, e.g. initial
|
||||
* creation of tenant
|
||||
* @return the direct cache manager to access without tenant aware check, cause in sometimes it's necessary to access the cache
|
||||
* directly without having the current tenant, e.g. initial creation of tenant
|
||||
*/
|
||||
@Bean(name = "directCacheManager")
|
||||
@ConditionalOnMissingBean(name = "directCacheManager")
|
||||
@@ -72,6 +70,5 @@ public class CacheAutoConfiguration {
|
||||
|
||||
return cacheManager;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,9 +15,8 @@ import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Properties for configuring the cache within a cluster. The TTL (time to live)
|
||||
* is used for the lifetime limit of data in caches. After lifetime the data
|
||||
* gets reloaded out of the database.
|
||||
* Properties for configuring the cache within a cluster. The TTL (time to live) is used for the lifetime limit of data in caches.
|
||||
* After lifetime the data gets reloaded out of the database.
|
||||
*/
|
||||
@Data
|
||||
@ConfigurationProperties("hawkbit.cache.global")
|
||||
|
||||
@@ -17,12 +17,9 @@ import org.springframework.cache.Cache;
|
||||
import org.springframework.cache.CacheManager;
|
||||
|
||||
/**
|
||||
* A {@link CacheManager} delegator which wraps the
|
||||
* {@link CacheManager#getCache(String)} and
|
||||
* {@link CacheManager#getCacheNames()} to include the
|
||||
* {@link TenantAware#getCurrentTenant()} when accessing a cache, so caches are
|
||||
* seperated.
|
||||
*
|
||||
* A {@link CacheManager} delegator which wraps the {@link CacheManager#getCache(String)} and {@link CacheManager#getCacheNames()}
|
||||
* to include the {@link TenantAware#getCurrentTenant()} when accessing a cache, so caches are seperated.
|
||||
* <p/>
|
||||
* Additionally, it also provides functionality to retrieve all caches overall tenants at once, for monitoring and system access.
|
||||
*/
|
||||
public class TenantAwareCacheManager implements TenancyCacheManager {
|
||||
|
||||
@@ -58,7 +58,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
@Validated
|
||||
public class JpaTenantConfigurationManagement implements TenantConfigurationManagement {
|
||||
|
||||
private static final ConfigurableConversionService conversionService = new DefaultConversionService();
|
||||
private static final ConfigurableConversionService CONVERSION_SERVICE = new DefaultConversionService();
|
||||
|
||||
@Autowired
|
||||
private TenantConfigurationRepository tenantConfigurationRepository;
|
||||
@Autowired
|
||||
@@ -87,7 +88,7 @@ public class JpaTenantConfigurationManagement implements TenantConfigurationMana
|
||||
public <T extends Serializable> Map<String, TenantConfigurationValue<T>> addOrUpdateConfiguration(Map<String, T> configurations) {
|
||||
// Register a callback to be invoked after the transaction is committed - for cache eviction
|
||||
afterCommitExecutor.afterCommit(() -> {
|
||||
Cache cache = cacheManager.getCache("tenantConfiguration");
|
||||
final Cache cache = cacheManager.getCache("tenantConfiguration");
|
||||
if (cache != null) {
|
||||
configurations.keySet().forEach(cache::evict);
|
||||
}
|
||||
@@ -116,7 +117,8 @@ public class JpaTenantConfigurationManagement implements TenantConfigurationMana
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(value = "tenantConfiguration", key = "#configurationKeyName")
|
||||
// TODO - check if cache works
|
||||
// @Cacheable(value = "tenantConfiguration", key = "#configurationKeyName")
|
||||
public <T extends Serializable> TenantConfigurationValue<T> getConfigurationValue(
|
||||
final String configurationKeyName, final Class<T> propertyType) {
|
||||
checkAccess(configurationKeyName);
|
||||
@@ -141,7 +143,7 @@ public class JpaTenantConfigurationManagement implements TenantConfigurationMana
|
||||
"Cannot parse the database value of type %s into the type %s.", key.getDataType(), propertyType));
|
||||
}
|
||||
|
||||
return conversionService.convert(key.getDefaultValue(), propertyType);
|
||||
return CONVERSION_SERVICE.convert(key.getDefaultValue(), propertyType);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -214,7 +216,7 @@ public class JpaTenantConfigurationManagement implements TenantConfigurationMana
|
||||
.createdAt(updatedTenantConfiguration.getCreatedAt())
|
||||
.lastModifiedAt(updatedTenantConfiguration.getLastModifiedAt())
|
||||
.lastModifiedBy(updatedTenantConfiguration.getLastModifiedBy())
|
||||
.value(conversionService.convert(updatedTenantConfiguration.getValue(), clazzT))
|
||||
.value(CONVERSION_SERVICE.convert(updatedTenantConfiguration.getValue(), clazzT))
|
||||
.build();
|
||||
}));
|
||||
}
|
||||
@@ -227,7 +229,7 @@ public class JpaTenantConfigurationManagement implements TenantConfigurationMana
|
||||
.createdAt(tenantConfiguration.getCreatedAt())
|
||||
.lastModifiedAt(tenantConfiguration.getLastModifiedAt())
|
||||
.lastModifiedBy(tenantConfiguration.getLastModifiedBy())
|
||||
.value(conversionService.convert(tenantConfiguration.getValue(), propertyType)).build();
|
||||
.value(CONVERSION_SERVICE.convert(tenantConfiguration.getValue(), propertyType)).build();
|
||||
|
||||
} else if (configurationKey.getDefaultValue() != null) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user