Skip to content

Commit

Permalink
Håndterer manglende pepcache på lik måte som pepcache for "AAPEN" og …
Browse files Browse the repository at this point in the history
…"VENTENDE" oppgave med utgått frist for "oppdatert". (#1799)

Egen oppdatering av "LUKKET" oppgaver som kjøres sjeldnere (hvert 2.sekund og med 1mn gyldighet)
  • Loading branch information
baskevold authored Dec 13, 2023
1 parent a9de120 commit bd6847b
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 16 deletions.
8 changes: 4 additions & 4 deletions src/main/kotlin/no/nav/k9/los/K9Los.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.saktillos.K9SakTilLosAda
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.saktillos.K9SakTilLosApi
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.statistikk.OppgavestatistikkTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.statistikk.StatistikkApi
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9klagetillos.K9KlageTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9saktillos.K9SakTilLosHistorikkvaskTjeneste
import no.nav.k9.los.nyoppgavestyring.ko.OppgaveKoApis
import no.nav.k9.los.nyoppgavestyring.mottak.feltdefinisjon.FeltdefinisjonApi
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.OppgaveV3Api
import no.nav.k9.los.nyoppgavestyring.mottak.oppgavetype.OppgavetypeApi
Expand Down Expand Up @@ -161,7 +158,10 @@ fun Application.k9Los() {
oppgaveKøRepository = koin.get()
)

PepCacheOppdaterer(koin.get()).start()
PepCacheOppdaterer(koin.get()).run {
startOppdateringAvÅpneOgVentende()
startOppdateringAvLukkedeOppgaver()
}

val sjekkReserverteJobb =
sjekkReserverteJobb(saksbehandlerRepository = koin.get(), reservasjonRepository = koin.get())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package no.nav.k9.los.nyoppgavestyring.pep

import no.nav.k9.los.domene.repository.OppgaveKøRepository
import org.slf4j.LoggerFactory
import java.time.Duration
import java.util.*
Expand All @@ -15,17 +14,32 @@ class PepCacheOppdaterer(
private val TRÅDNAVN = "k9los-pepcache-oppdaterer"
private val log = LoggerFactory.getLogger(PepCacheOppdaterer::class.java)

fun start(): Timer {
fun startOppdateringAvÅpneOgVentende(): Timer {
return timer(
daemon = true,
name = TRÅDNAVN,
period = tidMellomKjøring.toMillis(),
initialDelay = forsinketOppstart.toMillis()
) {
try {
pepCacheService.oppdaterCacheForOppgaverEldreEnn(alderForOppfriskning)
pepCacheService.oppdaterCacheForÅpneOgVentendeOppgaverEldreEnn(gyldighet = alderForOppfriskning)
} catch (e: Exception) {
log.warn("Feil ved kjøring av PepCacheOppdaterer", e)
log.warn("Feil ved kjøring av PepCacheOppdaterer for åpne og ventene oppgaver", e)
}
}
}

fun startOppdateringAvLukkedeOppgaver(): Timer {
return timer(
daemon = true,
name = TRÅDNAVN,
period = Duration.ofSeconds(2).toMillis(),
initialDelay = forsinketOppstart.toMillis()
) {
try {
pepCacheService.oppdaterCacheForLukkedeOppgaverEldreEnn(gyldighet = Duration.ofDays(30))
} catch (e: Exception) {
log.warn("Feil ved kjøring av PepCacheOppdaterer for lukkede oppgaver", e)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import kotlinx.coroutines.runBlocking
import kotliquery.TransactionalSession
import no.nav.k9.los.domene.lager.oppgave.v2.TransactionalManager
import no.nav.k9.los.integrasjon.abac.IPepClient
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.Oppgavestatus
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.Oppgave
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository
import java.time.Duration
Expand All @@ -28,12 +29,24 @@ class PepCacheService(
}
}

fun oppdaterCacheForOppgaverEldreEnn(gyldighet: Duration = Duration.ofHours(23)) {
fun oppdaterCacheForÅpneOgVentendeOppgaverEldreEnn(gyldighet: Duration = Duration.ofHours(23)) {
oppdaterCacheForOppgaverMedStatusEldreEnn(gyldighet, setOf(Oppgavestatus.VENTER, Oppgavestatus.AAPEN))
}

fun oppdaterCacheForLukkedeOppgaverEldreEnn(gyldighet: Duration = Duration.ofDays(30)) {
oppdaterCacheForOppgaverMedStatusEldreEnn(gyldighet, setOf(Oppgavestatus.LUKKET))
}

private fun oppdaterCacheForOppgaverMedStatusEldreEnn(
gyldighet: Duration = Duration.ofHours(23),
status: Set<Oppgavestatus>
) {
transactionalManager.transaction { tx ->
runBlocking {
val oppgaverSomMåOppdateres = oppgaveRepository.hentÅpneOgVentendeOppgaverMedPepCacheEldreEnn(
val oppgaverSomMåOppdateres = oppgaveRepository.hentOppgaverMedStatusOgPepCacheEldreEnn(
tidspunkt = LocalDateTime.now() - gyldighet,
antall = 1,
status = status,
tx
)
oppgaverSomMåOppdateres.forEach { oppgave -> oppdater(tx, oppgave) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.k9.los.nyoppgavestyring.visningoguttrekk
import kotliquery.Row
import kotliquery.TransactionalSession
import kotliquery.queryOf
import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.Oppgavestatus
import no.nav.k9.los.nyoppgavestyring.mottak.oppgavetype.OppgavetypeRepository
import java.time.LocalDateTime
import no.nav.k9.los.spi.felter.HentVerdiInput
Expand Down Expand Up @@ -140,9 +141,10 @@ class OppgaveRepository(
)
}

fun hentÅpneOgVentendeOppgaverMedPepCacheEldreEnn(
fun hentOppgaverMedStatusOgPepCacheEldreEnn(
tidspunkt: LocalDateTime = LocalDateTime.now(),
antall: Int = 1,
status: Set<Oppgavestatus>,
tx: TransactionalSession
): List<Oppgave> {
return tx.run(
Expand All @@ -153,8 +155,8 @@ class OppgaveRepository(
LEFT JOIN OPPGAVE_PEP_CACHE opc ON (
o.kildeomrade = opc.kildeomrade AND o.ekstern_id = opc.ekstern_id
)
WHERE o.aktiv is true AND o.status IN ('VENTER', 'AAPEN')
AND opc.oppdatert < :grense
WHERE o.aktiv is true AND o.status IN ('${status.joinToString("','")}')
AND (opc.oppdatert is null OR opc.oppdatert < :grense)
ORDER BY opc.oppdatert
LIMIT :limit
""".trimIndent(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,13 @@ class PepCacheServiceTest : KoinTest, AbstractPostgresTest() {
val eksternId = UUID.randomUUID().toString()
k9sakEventHandler.prosesser(lagBehandlingprosessEventMedStatus(eksternId, saksnummer))

pepCacheService.oppdaterCacheForOppgaverEldreEnn(gyldighet = Duration.ofHours(2))
pepCacheService.oppdaterCacheForÅpneOgVentendeOppgaverEldreEnn(gyldighet = Duration.ofHours(2))
verify(exactly = 0) { pepRepository.lagre(any(), any()) }

loggAlleOppgaverMedFelterOgCache()

val tidspunktForsøktOppdatert = LocalDateTime.now()
pepCacheService.oppdaterCacheForOppgaverEldreEnn(gyldighet = Duration.ofNanos(1))
pepCacheService.oppdaterCacheForÅpneOgVentendeOppgaverEldreEnn(gyldighet = Duration.ofNanos(1))

val slot = slot<PepCache>()
verify(exactly = 1) { pepRepository.lagre(capture(slot), any()) }
Expand All @@ -157,7 +157,7 @@ class PepCacheServiceTest : KoinTest, AbstractPostgresTest() {
tidMellomKjøring = Duration.ofMillis(500),
alderForOppfriskning = Duration.ofNanos(1),
forsinketOppstart = Duration.ZERO
).start()
).startOppdateringAvÅpneOgVentende()

val saksnummer = "TEST4"
gjørSakOrdinær(saksnummer)
Expand Down

0 comments on commit bd6847b

Please sign in to comment.