Reomve a @Cacheable that might not work (#2102)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-23 16:52:06 +02:00
committed by GitHub
parent 016bada08b
commit 299d7091a2
4 changed files with 20 additions and 25 deletions

View File

@@ -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;
}
}
}
}

View File

@@ -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")

View File

@@ -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 {

View File

@@ -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) {