Skip to content
Snippets Groups Projects
Verified Commit 1110b460 authored by Jan Pavlíček's avatar Jan Pavlíček
Browse files

fix: timeout on the establishing connection with repositories

parent 4c73fdac
No related branches found
No related tags found
1 merge request!23fix: timeout on the establishing connection with repositories
Pipeline #569011 passed with stages
in 1 minute and 48 seconds
......@@ -41,6 +41,8 @@ public class MockBrokerProperties {
private final String visaConfigsPath;
private final Integer passportRepositoriesTimeout;
@NotNull
private final List<Ga4ghClaimRepositoryProperties> passportRepositories = new ArrayList<>();
......@@ -48,12 +50,13 @@ public class MockBrokerProperties {
@NonNull String jku,
@NonNull String pathToJwkFile,
List<Ga4ghClaimRepositoryProperties> passportRepositories,
@NonNull String visaConfigsPath)
@NonNull String visaConfigsPath, Integer passportRepositoriesTimeout)
throws MalformedURLException, ConfigurationException, URISyntaxException
{
this.issuer = issuer;
this.visaConfigsPath = visaConfigsPath;
File dir = new File(visaConfigsPath);
this.passportRepositoriesTimeout = passportRepositoriesTimeout;
File dir = new File(visaConfigsPath);
if (!dir.exists()) {
throw new ConfigurationException("provided path links to a non-existent location");
} else if (!dir.isDirectory()) {
......
......@@ -54,6 +54,8 @@ public class PerunBrokerInstanceProperties {
private final String uesAffiliationsAttr;
private final Integer passportRepositoriesTimeout;
private final List<Ga4ghClaimRepositoryProperties> passportRepositories = new ArrayList<>();
public PerunBrokerInstanceProperties(String name,
......@@ -70,7 +72,8 @@ public class PerunBrokerInstanceProperties {
Long groupAffiliationsRootGroupId,
Long groupAffiliationsVoId,
String groupAffiliationsGroupMemberExpirationAttr,
List<Ga4ghClaimRepositoryProperties> passportRepositories)
List<Ga4ghClaimRepositoryProperties> passportRepositories,
Integer passportRepositoriesTimeout)
{
this.name = name;
this.instanceClass = instanceClass;
......@@ -87,7 +90,8 @@ public class PerunBrokerInstanceProperties {
this.groupAffiliationsGroupMemberExpirationAttr =
groupAffiliationsGroupMemberExpirationAttr;
this.visaIssuer = visaIssuer;
if (passportRepositories != null) {
this.passportRepositoriesTimeout = passportRepositoriesTimeout;
if (passportRepositories != null) {
this.passportRepositories.addAll(passportRepositories);
}
}
......
......@@ -11,6 +11,7 @@ import cz.muni.ics.ga4gh.middleware.service.JWSValidationService;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
......@@ -18,6 +19,7 @@ import java.util.Map;
import java.util.Set;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.MediaType;
import org.springframework.http.client.InterceptingClientHttpRequestFactory;
import org.springframework.web.client.HttpClientErrorException;
......@@ -143,7 +145,9 @@ public class ExternalRepositoryUtils {
public static void initializeClaimRepository(
@NonNull Ga4ghClaimRepositoryProperties ga4ghClaimRepositoryProperties,
@NonNull List<Ga4ghClaimRepository> claimRepositories)
@NonNull List<Ga4ghClaimRepository> claimRepositories,
@NonNull Integer connectTimeout
)
{
String name = ga4ghClaimRepositoryProperties.getName();
String actionURL = ga4ghClaimRepositoryProperties.getUrl();
......@@ -154,8 +158,9 @@ public class ExternalRepositoryUtils {
ga4ghClaimRepositoryProperties);
return;
}
RestTemplate restTemplate = new RestTemplate();
RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(connectTimeout));
RestTemplate restTemplate = restTemplateBuilder.build();
restTemplate.setRequestFactory(
new InterceptingClientHttpRequestFactory(
restTemplate.getRequestFactory(), new ArrayList<>(headers)
......
......@@ -477,7 +477,10 @@ public abstract class AbstractPerunBasedGa4ghBroker implements PerunBasedGa4ghBr
brokerInstanceProperties.getPassportRepositories())
{
ExternalRepositoryUtils.initializeClaimRepository(
ga4ghClaimRepositoryProperties, claimRepositories);
ga4ghClaimRepositoryProperties,
claimRepositories,
brokerInstanceProperties.getPassportRepositoriesTimeout()
);
ExternalRepositoryUtils.initializeRepositoryValidationKeys(
ga4ghClaimRepositoryProperties.getName(),
ga4ghClaimRepositoryProperties.getJwks(),
......
......@@ -76,7 +76,10 @@ public class MockOidcGa4ghBrokerImpl implements MockOidcGa4ghBroker {
List<Ga4ghClaimRepositoryProperties> repoProps = mockBrokerProperties.getPassportRepositories();
for (Ga4ghClaimRepositoryProperties ga4ghClaimRepositoryProperties: repoProps) {
ExternalRepositoryUtils.initializeClaimRepository(
ga4ghClaimRepositoryProperties, claimRepositories);
ga4ghClaimRepositoryProperties,
claimRepositories,
mockBrokerProperties.getPassportRepositoriesTimeout()
);
ExternalRepositoryUtils.initializeRepositoryValidationKeys(
ga4ghClaimRepositoryProperties.getName(),
ga4ghClaimRepositoryProperties.getJwks(),
......
......@@ -35,6 +35,8 @@ brokers:
group-affiliations-root-group-id: 2
# UES AFFILIATIONS
ues-affiliations-attr: urn:perun:ues:attribute-def:def:affiliations
# timeout for establishing connection to repositories in seconds
passport-repositories-timeout: 5
passport-repositories:
- name: repo1
url: url1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment