{"record":{"id":"6edd2405187f6e94","repo":"quarkusio/quarkus","slug":"ioexception-deploymentstatus-6edd24","errorCode":null,"errorMessage":"IOException(deploymentStatus)","messagePattern":"IOException\\(deploymentStatus\\)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"critical","filePath":"extensions/google-cloud-functions/runtime/src/main/java/io/quarkus/gcp/functions/QuarkusHttpFunction.java","lineNumber":71,"sourceCode":"            delegateClassLoader = Thread.currentThread().getContextClassLoader();\n            try {\n                Class<?> clazz = Class.forName(selectedDelegate, false, delegateClassLoader);\n                delegate = (HttpFunction) Arc.container().instance(clazz).get();\n            } catch (ClassNotFoundException e) {\n                throw new RuntimeException(e);\n            }\n        }\n    }\n\n    static void clearState() {\n        delegate = null;\n        delegateClassLoader = null;\n    }\n\n    @Override\n    public void service(HttpRequest httpRequest, HttpResponse httpResponse) throws Exception {\n        if (!started) {\n            throw new IOException(deploymentStatus);\n        }\n\n        // maybe we can check this at static init\n        if (delegate == null) {\n            throw new IOException(\"We didn't found any HttpFunction to run \" +\n                    \"(or there is multiple one and none selected inside your application.properties)\");\n        }\n\n        ClassLoader currentCl = Thread.currentThread().getContextClassLoader();\n        try {\n            Thread.currentThread().setContextClassLoader(delegateClassLoader);\n            delegate.service(httpRequest, httpResponse);\n        } finally {\n            Thread.currentThread().setContextClassLoader(currentCl);\n        }\n    }\n}\n","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/google-cloud-functions/runtime/src/main/java/io/quarkus/gcp/functions/QuarkusHttpFunction.java#L53-L89","documentation":"QuarkusHttpFunction.service throws an IOException whose message is the captured bootstrap log (deploymentStatus) when the Quarkus application failed to start in the static initializer. started remains false, so every HTTP invocation reports the startup stack trace instead of routing the request.","triggerScenarios":"Static-init bootstrap of io.quarkus.runner.ApplicationImpl threw (bad config, bean/CDI failure, missing dependency) and then an HTTP request arrives at service().","commonSituations":"Invalid quarkus.* properties, port/binding or extension startup failures, bean instantiation errors, or invoking the function without the Quarkus-generated uber-jar packaging.","solutions":["Inspect the IOException message for the embedded bootstrap stack trace and fix that root cause","Reproduce locally by running the built uber-jar with the Functions Framework to see startup logs","Check quarkus.* configuration validity and that all CDI beans can be produced","Ensure you deploy the uber-jar produced by the Quarkus GCP functions integration"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// run the packaged function jar locally and assert startup succeeded\njava -jar target/my-function.jar &\nsleep 5 && curl -sf http://localhost:8080/health || echo \"bootstrap failed\"","typeGuard":null,"tryCatchPattern":"try {\n    function.service(request, response);\n} catch (IOException e) {\n    if (e.getMessage().contains(\"Quarkus bootstrap failed\")) {\n        LOG.error(\"Startup failure:\\n\" + e.getMessage());\n    } else throw e;\n}","preventionTips":["Deploy only uber-jars built via the Quarkus GCP integration","Test the packaged jar locally before gcloud deploy","Keep startup-time bean creation cheap and validated in CI","Read the embedded deploymentStatus message first when cold starts fail"],"tags":["gcp","startup-failure","bootstrap","http-function"],"backgroundTag":"app-bootstrap-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}