Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setter ApplicationState initially til false, for å ikke få false posi… #279

Merged
merged 3 commits into from
Nov 27, 2024

Conversation

inavga
Copy link
Contributor

@inavga inavga commented Nov 27, 2024

…tives under oppstart

Vårt team har problemer med at pdfgen-oms, en av applikasjonene våre som bygger på pdfgen avviser forespørsler. Vi mistenker at det kan ha med å gjøre at Nais sender requests til den før den er klar. Det ser ikke ut til at ApplicationState.ready settes til false andre steder enn under shutdown fra før, og den bør jo være false før applikasjonen er ferdig med å starte opp.

@MikAoJk
Copy link
Collaborator

MikAoJk commented Nov 27, 2024

Gjerne lag ein unit test, for å verifisere at ApplicationStatene er false, og så blir true, når dei er klare

@MikAoJk
Copy link
Collaborator

MikAoJk commented Nov 27, 2024

Bør kanskje også ha denne slik:
src/main/kotlin/no/nav/pdfgen/plugins/LifecycleHooks.kt

fun Application.configureLifecycleHooks(applicationState: ApplicationState) {
    monitor.subscribe(ApplicationStarted) {
        applicationState.ready = true
        applicationState.alive = true}
    monitor.subscribe(ApplicationStopped) {
        applicationState.ready = false
        applicationState.alive = false
    }
}

@inavga
Copy link
Contributor Author

inavga commented Nov 27, 2024

Gjerne lag ein unit test, for å verifisere at ApplicationStatene er false, og så blir true, når dei er klare

Jeg antar jeg kan gjøre det fra ApplicationTest da? Hvordan kan jeg trigge ApplicationStarted-eventen?

…ionStarted er den ikke nødvendigvis klar for å ta imot connections enda.
@MikAoJk
Copy link
Collaborator

MikAoJk commented Nov 27, 2024

ApplicationTest

Slik kan du trigge det:
monitor.raise(ApplicationStopped, this)

@Test
    internal fun `Returns internal server error when readyness check fails`() {
        testApplication {
            application {
                routing {
                    val applicationState = ApplicationState()
                    applicationState.ready = false
                    applicationState.alive = false
                    registerNaisApi(applicationState)
                }
                monitor.raise(ApplicationStopped, this)
            }
            val response = client.get("/internal/is_ready")

            assertEquals(HttpStatusCode.InternalServerError, response.status)
            assertEquals("Please wait! I'm not ready :(", response.bodyAsText())
        }
    }

@MikAoJk MikAoJk merged commit 832ed16 into navikt:main Nov 27, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants