diff --git a/search-service-image-v1/pom.xml b/search-service-image-v1/pom.xml index a94c137..03c33e6 100644 --- a/search-service-image-v1/pom.xml +++ b/search-service-image-v1/pom.xml @@ -12,7 +12,7 @@ search-service-image-v1 com.iqser.red.service - 1.0-SNAPSHOT + 2.0-SNAPSHOT pom diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/Connection.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/Connection.java deleted file mode 100644 index 5e54ed9..0000000 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/model/Connection.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iqser.red.service.search.v1.server.model; - -import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.SearchConnection; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@Builder -@AllArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class Connection { - - @EqualsAndHashCode.Include - private String hosts; - private SearchConnection searchConnection; - -} diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/elasticsearch/EsClientCache.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/elasticsearch/EsClientCache.java index 6c20399..d8a673b 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/elasticsearch/EsClientCache.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/elasticsearch/EsClientCache.java @@ -1,7 +1,6 @@ package com.iqser.red.service.search.v1.server.service.elasticsearch; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -12,7 +11,6 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.cache.RemovalListener; import com.iqser.red.service.search.v1.server.client.TenantsClient; -import com.iqser.red.service.search.v1.server.model.Connection; import com.iqser.red.service.search.v1.server.multitenancy.EncryptionDecryptionService; import com.iqser.red.service.search.v1.server.multitenancy.TenantContext; @@ -37,37 +35,29 @@ public class EsClientCache { @Value("${multitenancy.client-cache.expireAfterAccess:10}") private Integer expireAfterAccess; - private LoadingCache connections; - private LoadingCache clients; + private LoadingCache clients; @PostConstruct protected void createCache() { - connections = CacheBuilder.newBuilder().maximumSize(maximumSize).expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES).build(new CacheLoader<>() { - public Connection load(String tenantId) { - - var tenant = tenantsClient.getTenant(tenantId); - var hostsAsString = tenant.getSearchConnection().getHosts().stream().collect(Collectors.joining()); - return Connection.builder().hosts(hostsAsString).searchConnection(tenant.getSearchConnection()).build(); - } - }); - clients = CacheBuilder.newBuilder() .maximumSize(maximumSize) .expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES) - .removalListener((RemovalListener) removal -> { + .removalListener((RemovalListener) removal -> { removal.getValue().shutdown(); - log.info("Closed elasticsearch client for tenant {}", removal.getKey().getHosts()); + log.info("Closed elasticsearch client for tenant {}", removal.getKey()); }) .build(new CacheLoader<>() { - public EsClient load(Connection key) { + public EsClient load(String tenantId) { - if (key.getSearchConnection().getPassword() != null) { - key.getSearchConnection().setPassword(encryptionDecryptionService.decrypt(key.getSearchConnection().getPassword())); + var tenant = tenantsClient.getTenant(tenantId); + + if (tenant.getSearchConnection().getPassword() != null) { + tenant.getSearchConnection().setPassword(encryptionDecryptionService.decrypt(tenant.getSearchConnection().getPassword())); } - var client = new EsClient(key.getSearchConnection()); - log.info("Initialized elasticsearch client for tenant {}", key); + var client = new EsClient(tenant.getSearchConnection()); + log.info("Initialized elasticsearch client for tenant {}", tenantId); indexCreatorService.createIndex(client); return client; } @@ -78,8 +68,7 @@ public class EsClientCache { @SneakyThrows public EsClient getClient() { - var connection = connections.get(TenantContext.getTenantId()); - return clients.get(connection); + return clients.get(TenantContext.getTenantId()); } } \ No newline at end of file diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/opensearch/OpensearchClientCache.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/opensearch/OpensearchClientCache.java index b81989a..13f8688 100644 --- a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/opensearch/OpensearchClientCache.java +++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/service/opensearch/OpensearchClientCache.java @@ -1,7 +1,6 @@ package com.iqser.red.service.search.v1.server.service.opensearch; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -12,7 +11,6 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.cache.RemovalListener; import com.iqser.red.service.search.v1.server.client.TenantsClient; -import com.iqser.red.service.search.v1.server.model.Connection; import com.iqser.red.service.search.v1.server.multitenancy.EncryptionDecryptionService; import com.iqser.red.service.search.v1.server.multitenancy.TenantContext; @@ -37,37 +35,29 @@ public class OpensearchClientCache { @Value("${multitenancy.client-cache.expireAfterAccess:10}") private Integer expireAfterAccess; - private LoadingCache connections; - private LoadingCache clients; + private LoadingCache clients; @PostConstruct protected void createCache() { - connections = CacheBuilder.newBuilder().maximumSize(maximumSize).expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES).build(new CacheLoader<>() { - public Connection load(String tenantId) { - - var tenant = tenantsClient.getTenant(tenantId); - var hostsAsString = tenant.getSearchConnection().getHosts().stream().collect(Collectors.joining()); - return Connection.builder().hosts(hostsAsString).searchConnection(tenant.getSearchConnection()).build(); - } - }); - clients = CacheBuilder.newBuilder() .maximumSize(maximumSize) .expireAfterAccess(expireAfterAccess, TimeUnit.MINUTES) - .removalListener((RemovalListener) removal -> { + .removalListener((RemovalListener) removal -> { removal.getValue().shutdown(); - log.info("Closed opensearch client for tenant {}", removal.getKey().getHosts()); + log.info("Closed elasticsearch client for tenant {}", removal.getKey()); }) .build(new CacheLoader<>() { - public OpensearchClient load(Connection key) { + public OpensearchClient load(String tenantId) { - if (key.getSearchConnection().getPassword() != null) { - key.getSearchConnection().setPassword(encryptionDecryptionService.decrypt(key.getSearchConnection().getPassword())); + var tenant = tenantsClient.getTenant(tenantId); + + if (tenant.getSearchConnection().getPassword() != null) { + tenant.getSearchConnection().setPassword(encryptionDecryptionService.decrypt(tenant.getSearchConnection().getPassword())); } - var client = new OpensearchClient(key.getSearchConnection()); - log.info("Initialized opensearch client for tenant {}", key); + var client = new OpensearchClient(tenant.getSearchConnection()); + log.info("Initialized elasticsearch client for tenant {}", tenantId); indexCreatorService.createIndex(client); return client; } @@ -78,8 +68,7 @@ public class OpensearchClientCache { @SneakyThrows public OpensearchClient getClient() { - var connection = connections.get(TenantContext.getTenantId()); - return clients.get(connection); + return clients.get(TenantContext.getTenantId()); } } \ No newline at end of file