From f83688eb3f18948f8d3c3bc15a6b06f50a519d05 Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Fri, 30 Aug 2024 10:05:40 +0200 Subject: [PATCH] =?UTF-8?q?Ikke=20kj=C3=B8r=20retry=20p=C3=A5=20SocketTime?= =?UTF-8?q?outException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arbeidsforhold/ArbeidsforholdConsumer.kt | 4 ---- .../arbeidsforhold/EnhetsregisterConsumer.kt | 4 ---- .../consumer/bidragperson/BidragPersonConsumer.kt | 8 -------- .../consumer/familiebasak/FamilieBaSakConsumer.kt | 4 ---- .../consumer/familieefsak/FamilieEfSakConsumer.kt | 4 ---- .../consumer/familiekssak/FamilieKsSakConsumer.kt | 4 ---- .../InntektskomponentenConsumer.kt | 4 ---- .../grunnlag/consumer/pensjon/PensjonConsumer.kt | 4 ---- .../consumer/skattegrunnlag/SigrunConsumer.kt | 4 ---- .../grunnlag/exception/RestExceptionHandler.kt | 14 ++++++-------- 10 files changed, 6 insertions(+), 48 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/ArbeidsforholdConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/ArbeidsforholdConsumer.kt index fab4979f..d687713d 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/ArbeidsforholdConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/ArbeidsforholdConsumer.kt @@ -12,9 +12,6 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val AAREG_CONTEXT = "/api/v2/arbeidstaker/arbeidsforhold" @@ -25,7 +22,6 @@ open class ArbeidsforholdConsumer(private val restTemplate: HttpHeaderRestTempla val LOGGER: Logger = LoggerFactory.getLogger(ArbeidsforholdConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentArbeidsforhold(request: HentArbeidsforholdRequest): RestResponse> { SECURE_LOGGER.info("Henter arbeidsforhold fra Aareg med request: ${tilJson(request)}") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/EnhetsregisterConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/EnhetsregisterConsumer.kt index eadf829f..338f64a6 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/EnhetsregisterConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/arbeidsforhold/EnhetsregisterConsumer.kt @@ -11,9 +11,6 @@ import no.nav.bidrag.grunnlag.util.GrunnlagUtil.Companion.tilJson import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException open class EnhetsregisterConsumer(private val restTemplate: HttpHeaderRestTemplate) : GrunnlagsConsumer() { @@ -22,7 +19,6 @@ open class EnhetsregisterConsumer(private val restTemplate: HttpHeaderRestTempla val LOGGER: Logger = LoggerFactory.getLogger(EnhetsregisterConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentEnhetsinfo(request: HentEnhetsregisterRequest): RestResponse { LOGGER.info("Henter info om en organisasjon fra Ereg") SECURE_LOGGER.info("Henter info om en organisasjon fra Ereg med request: ${tilJson(request)}") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/bidragperson/BidragPersonConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/bidragperson/BidragPersonConsumer.kt index 458447f5..23f13f3f 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/bidragperson/BidragPersonConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/bidragperson/BidragPersonConsumer.kt @@ -18,9 +18,6 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val BIDRAGPERSON_CONTEXT_FOEDSEL_DOED = "/bidrag-person/navnfoedseldoed" private const val BIDRAGPERSON_CONTEXT_FORELDER_BARN_RELASJON = "/bidrag-person/forelderbarnrelasjon" @@ -35,7 +32,6 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate val logger: Logger = LoggerFactory.getLogger(BidragPersonConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentNavnFoedselOgDoed(personident: Personident): RestResponse { logger.debug("Kaller bidrag-person som igjen henter info om fødselsdato og eventuelt død fra PDL") @@ -52,7 +48,6 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate return restResponse } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentForelderBarnRelasjon(personident: Personident): RestResponse { logger.info("Kaller bidrag-person som igjen henter forelderbarnrelasjoner for angitt person fra PDL") @@ -69,7 +64,6 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate return restResponse } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentHusstandsmedlemmer(request: HusstandsmedlemmerRequest): RestResponse { logger.info( "Kaller bidrag-person som igjen henter info om en persons bostedsadresser " + @@ -89,7 +83,6 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate return restResponse } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentSivilstand(personident: Personident): RestResponse { logger.info("Kaller bidrag-person som igjen kaller PDL for å finne en persons sivilstand") @@ -106,7 +99,6 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate return restResponse } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentPersonidenter(personident: Personident, inkludereHistoriske: Boolean): RestResponse> { logger.debug("Kaller bidrag-person som igjen kaller PDL for å finne en persons historiske identer") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiebasak/FamilieBaSakConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiebasak/FamilieBaSakConsumer.kt index dd3eac8c..6516b1b3 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiebasak/FamilieBaSakConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiebasak/FamilieBaSakConsumer.kt @@ -9,9 +9,6 @@ import no.nav.bidrag.grunnlag.exception.tryExchange import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val FAMILIEBASAK_CONTEXT = "/api/bisys/hent-utvidet-barnetrygd" @@ -22,7 +19,6 @@ open class FamilieBaSakConsumer(private val restTemplate: HttpHeaderRestTemplate val logger: Logger = LoggerFactory.getLogger(FamilieBaSakConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentFamilieBaSak(request: FamilieBaSakRequest): RestResponse { logger.debug("Henter utvidet barnetrygd og småbarnstillegg fra familie-ba-sak") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familieefsak/FamilieEfSakConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familieefsak/FamilieEfSakConsumer.kt index 627ffb14..bcab2d61 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familieefsak/FamilieEfSakConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familieefsak/FamilieEfSakConsumer.kt @@ -9,9 +9,6 @@ import no.nav.bidrag.grunnlag.exception.tryExchange import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val BARNETILSYN_CONTEXT = "/api/ekstern/bisys/perioder-barnetilsyn" @@ -22,7 +19,6 @@ open class FamilieEfSakConsumer(private val restTemplate: HttpHeaderRestTemplate private val logger: Logger = LoggerFactory.getLogger(FamilieEfSakConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentBarnetilsyn(request: BarnetilsynRequest): RestResponse { logger.debug("Henter barnetilsyn") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiekssak/FamilieKsSakConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiekssak/FamilieKsSakConsumer.kt index 3f7ecd11..5cd4a25c 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiekssak/FamilieKsSakConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/familiekssak/FamilieKsSakConsumer.kt @@ -9,9 +9,6 @@ import no.nav.bidrag.grunnlag.exception.tryExchange import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val FAMILIEKSSAK_CONTEXT = "/api/bisys/hent-utbetalingsinfo" @@ -22,7 +19,6 @@ open class FamilieKsSakConsumer(private val restTemplate: HttpHeaderRestTemplate val logger: Logger = LoggerFactory.getLogger(FamilieKsSakConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentKontantstotte(request: BisysDto): RestResponse { val restResponse = restTemplate.tryExchange( FAMILIEKSSAK_CONTEXT, diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/inntektskomponenten/InntektskomponentenConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/inntektskomponenten/InntektskomponentenConsumer.kt index bce8cbf6..0e0017c5 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/inntektskomponenten/InntektskomponentenConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/inntektskomponenten/InntektskomponentenConsumer.kt @@ -15,9 +15,6 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable -import java.net.SocketTimeoutException private const val INNTEKT_LISTE_CONTEXT = "/rs/api/v1/hentinntektliste" private const val DETALJERTE_ABONNERTE_INNTEKTER_CONTEXT = "/rs/api/v1/hentdetaljerteabonnerteinntekter" @@ -29,7 +26,6 @@ open class InntektskomponentenConsumer(private val restTemplate: HttpHeaderRestT val LOGGER: Logger = LoggerFactory.getLogger(InntektskomponentenConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentInntekter(request: HentInntektListeRequest, abonnerteInntekterRequest: Boolean): RestResponse { if (abonnerteInntekterRequest) { LOGGER.debug("Henter abonnerte inntekter fra Inntektskomponenten.") diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/pensjon/PensjonConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/pensjon/PensjonConsumer.kt index ce8c5d45..041cf6d6 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/pensjon/PensjonConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/pensjon/PensjonConsumer.kt @@ -11,10 +11,7 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.core.ParameterizedTypeReference import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable import org.springframework.web.util.UriComponentsBuilder -import java.net.SocketTimeoutException private const val BARNETILLEGG_URL = "/pen/api/barnetillegg/search" @@ -25,7 +22,6 @@ open class PensjonConsumer(private val restTemplate: HttpHeaderRestTemplate) : G val LOGGER: Logger = LoggerFactory.getLogger(PensjonConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentBarnetilleggPensjon(request: HentBarnetilleggPensjonRequest): RestResponse> { val uri = UriComponentsBuilder.fromPath(BARNETILLEGG_URL) .build() diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/skattegrunnlag/SigrunConsumer.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/skattegrunnlag/SigrunConsumer.kt index 27960913..e9b7f220 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/skattegrunnlag/SigrunConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/consumer/skattegrunnlag/SigrunConsumer.kt @@ -10,10 +10,7 @@ import no.nav.bidrag.grunnlag.exception.tryExchange import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpMethod -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Retryable import org.springframework.web.util.UriComponentsBuilder -import java.net.SocketTimeoutException import java.time.LocalDate private const val SUMMERT_SKATTEGRUNNLAG_URL = "/api/v1/summertskattegrunnlag" @@ -27,7 +24,6 @@ open class SigrunConsumer(private val restTemplate: HttpHeaderRestTemplate) : Gr val LOGGER: Logger = LoggerFactory.getLogger(SigrunConsumer::class.java) } - @Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500)) open fun hentSummertSkattegrunnlag(request: HentSummertSkattegrunnlagRequest): RestResponse { val uri = UriComponentsBuilder.fromPath(SUMMERT_SKATTEGRUNNLAG_URL) .queryParam(INNTEKTSAAR, request.inntektsAar) diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/exception/RestExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/exception/RestExceptionHandler.kt index c9f19ffb..3bb2a742 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/exception/RestExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/exception/RestExceptionHandler.kt @@ -28,10 +28,10 @@ import org.springframework.web.bind.annotation.RestControllerAdvice import org.springframework.web.client.HttpClientErrorException import org.springframework.web.client.HttpServerErrorException import org.springframework.web.client.HttpStatusCodeException -import org.springframework.web.client.ResourceAccessException import org.springframework.web.client.RestClientException import org.springframework.web.client.RestTemplate import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException +import java.net.SocketTimeoutException import java.time.format.DateTimeParseException @RestControllerAdvice @@ -159,17 +159,15 @@ class HttpRetryPolicy( val throwable = context.lastThrowable val ignoreException = throwable != null && - (throwable is ResourceAccessException || throwable is HttpStatusCodeException && ignoreHttpStatus.contains(throwable.statusCode)) - val can = context.retryCount < maxAttempts && - ( - context.lastThrowable == null || !ignoreException - ) - if (!can && throwable != null) { + (throwable.cause is SocketTimeoutException || throwable is HttpStatusCodeException && ignoreHttpStatus.contains(throwable.statusCode)) + val shouldRetry = context.retryCount < maxAttempts && + (context.lastThrowable == null || !ignoreException) + if (!shouldRetry && throwable != null) { context.setAttribute(RetryContext.NO_RECOVERY, true) } else { context.removeAttribute(RetryContext.NO_RECOVERY) } - return can + return shouldRetry } override fun close(status: RetryContext) {