Skip to content

Commit

Permalink
Enkel retry av abac-kall ved typisk retryable nettverksfeil (#1165)
Browse files Browse the repository at this point in the history
* Enkel retry av abac-kall ved typisk retryable nettverksfeil

* Forbedring av retrylogikk
  • Loading branch information
jolarsen authored Aug 11, 2022
1 parent 163a0ad commit 6c41e1c
Showing 1 changed file with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.Base64;

Expand All @@ -20,7 +21,8 @@
import com.fasterxml.jackson.databind.ObjectReader;

import no.nav.foreldrepenger.konfig.KonfigVerdi;
import no.nav.vedtak.exception.TekniskException;
import no.nav.vedtak.exception.IntegrasjonException;
import no.nav.vedtak.exception.ManglerTilgangException;
import no.nav.vedtak.log.mdc.MDCOperations;
import no.nav.vedtak.mapper.json.DefaultJsonMapper;
import no.nav.vedtak.sikkerhet.pdp.xacml.XacmlRequestBuilder;
Expand Down Expand Up @@ -72,20 +74,33 @@ public XacmlResponse evaluate(XacmlRequestBuilder xacmlRequest) {
.POST(HttpRequest.BodyPublishers.ofString(DefaultJsonMapper.toJson(xacmlRequest.build()), UTF_8))
.build();

// Enkel retry
try {
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString(UTF_8));
if (response == null || response.statusCode() == HttpURLConnection.HTTP_UNAUTHORIZED || response.body() == null) {
return send(request);
} catch (IntegrasjonException e) {
LOG.info("F-157387 IntegrasjonException ved første kall til PDP", e);
}
return send(request);
}

private XacmlResponse send(HttpRequest request) {
try {
var response = client.send(request, HttpResponse.BodyHandlers.ofString(UTF_8));
if (response != null && response.statusCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
throw new ManglerTilgangException("F-157388", "Ingen tilgang fra PDP");
}
if (response == null || response.body() == null) {
LOG.info("ingen response fra PDP status = {}", response == null ? "null" : response.statusCode());
throw new TekniskException("F-157385", "Kunne ikke hente svar fra ABAC");
throw new IntegrasjonException("F-157386", "Kunne ikke hente svar fra PDP");
}
return reader.readValue(response.body(), XacmlResponse.class);
} catch (JsonProcessingException e) {
throw new TekniskException("F-208314", "Kunne ikke deserialisere objekt til JSON", e);
throw new IntegrasjonException("F-208314", "Kunne ikke deserialisere objekt til JSON", e);
} catch (IOException e) {
throw new TekniskException("F-091324", "Uventet IO-exception mot PDP", e);
throw new IntegrasjonException("F-091324", "Uventet IO-exception mot PDP", e);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new TekniskException("F-432938", "InterruptedException ved kall mot PDP", e);
throw new IntegrasjonException("F-432938", "InterruptedException ved kall mot PDP", e);
}
}

Expand Down

0 comments on commit 6c41e1c

Please sign in to comment.