diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingFileSystemCache.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingFileSystemCache.java index dd348932..0320a0b4 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingFileSystemCache.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingFileSystemCache.java @@ -40,7 +40,8 @@ public class ComponentMappingFileSystemCache { public File getComponentMappingFile(ComponentMappingMetadata metadata) { Path mappingFile = getMappingFileFromMetadata(metadata); - Path mappingFileMetaDataFile = mappingFile.resolveSibling(metadata.getName() + METADATA_SUFFIX); + Path mappingFileMetaDataFile = getMappingMetadataFileFromMetadata(metadata); + synchronized (ComponentMappingFileSystemCache.class) { if (fileExistsAndUpToDate(metadata, mappingFile, mappingFileMetaDataFile)) { @@ -52,7 +53,7 @@ public class ComponentMappingFileSystemCache { InputStreamResource inputStreamResource = storageService.getObject(TenantContext.getTenantId(), metadata.getStorageId()); Files.write(mappingFile, inputStreamResource.getContentAsByteArray(), StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); - + mapper.writeValue(mappingFileMetaDataFile.toFile(), metadata); return mappingFile.toFile(); @@ -87,6 +88,13 @@ public class ComponentMappingFileSystemCache { } + private Path getMappingMetadataFileFromMetadata(ComponentMappingMetadata metadata) { + + Path tenantStem = mappingFileDir.resolve(TenantContext.getTenantId()); + return tenantStem.resolve(metadata.getStorageId() + METADATA_SUFFIX); + } + + private boolean fileExistsAndUpToDate(ComponentMappingMetadata metadata, Path mappingFile, Path mappingFileMetaDataFile) { if (mappingFile.toFile().exists() && mappingFile.toFile().isFile() && mappingFileMetaDataFile.toFile().exists() && mappingFileMetaDataFile.toFile().isFile()) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingMemoryCache.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingMemoryCache.java index eca6b144..692c71e4 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingMemoryCache.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/components/ComponentMappingMemoryCache.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileReader; import java.io.Reader; import java.nio.charset.Charset; +import java.time.Duration; import java.util.List; import org.springframework.stereotype.Service; @@ -36,7 +37,7 @@ public class ComponentMappingMemoryCache { public ComponentMappingMemoryCache(ComponentMappingFileSystemCache componentMappingFileSystemCache) { this.fileSystemCache = componentMappingFileSystemCache; - cache = CacheBuilder.newBuilder().maximumWeight(MAX_NUMBER_OF_LINES).weigher(COMPONENT_MAPPING_WEIGHER).build(); + cache = CacheBuilder.newBuilder().maximumWeight(MAX_NUMBER_OF_LINES).weigher(COMPONENT_MAPPING_WEIGHER).expireAfterAccess(Duration.ofDays(1)).build(); }