Théo
02/17/2026, 1:24 PM2026-02-17 11:00:21,204 [public-api-executor-thread-1] ERROR i.a.c.s.e.h.UncaughtExceptionHandler(handle):33 - Uncaught exception
java.lang.NullPointerException: null
at io.airbyte.server.apis.publicapi.services.SourceServiceImpl.getSourceSchema(SourceService.kt:224)
at io.airbyte.server.apis.publicapi.controllers.ConnectionsController.publicCreateConnection$lambda$3(ConnectionsController.kt:91)
at io.airbyte.server.apis.publicapi.apiTracking.TrackingHelper.callWithTracker(TrackingHelper.kt:109)
at io.airbyte.server.apis.publicapi.controllers.ConnectionsController.publicCreateConnection(ConnectionsController.kt:90)
at io.airbyte.server.apis.publicapi.controllers.$ConnectionsController$Definition$Exec.dispatch(Unknown Source)
at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invokeUnsafe(AbstractExecutableMethodsDefinition.java:461)
at io.micronaut.context.DefaultBeanContext$BeanContextUnsafeExecutionHandle.invokeUnsafe(DefaultBeanContext.java:4438)
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:272)
at io.micronaut.web.router.DefaultUriRouteMatch.execute(DefaultUriRouteMatch.java:38)
at io.micronaut.http.server.RouteExecutor.executeRouteAndConvertBody(RouteExecutor.java:465)
at io.micronaut.http.server.RouteExecutor.lambda$callRoute$5(RouteExecutor.java:442)
at io.micronaut.core.execution.ExecutionFlow.lambda$async$0(ExecutionFlow.java:92)
at io.micronaut.core.propagation.PropagatedContext.lambda$wrap$3(PropagatedContext.java:232)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)kapa.ai
02/17/2026, 1:25 PMSourceServiceImpl.getSourceSchema, so I can’t say exactly which null value is causing it. But based on similar NPEs around schema discovery and connection creation, it almost always comes from the API being called without a valid discovered catalog or with missing catalog fields. [[Mongo–BigQuery NPE](https://discuss.airbyte.io/t/839); [Mixpanel discovered null](https://discuss.airbyte.io/t/2814)] A few concrete checks you can do: 1. Verify the source has a successful schema discovery first Using the Airbyte UI (or the Public API directly), make sure: - The source connection test passes. - “Discover schema” for that source completes successfully and returns a non‑empty catalog. In other issues, discovered (the catalog) was null and caused NPEs when creating connections. [[Severe performance / discovered null](https://discuss.airbyte.io/t/1011); [Mixpanel discovered null](https://discuss.airbyte.io/t/2814)] 2. Check what Terraform is sending to the Public API Since the error is thrown inside publicCreateConnection, it’s likely that: - The request either omits the catalog / stream configuration, or - References a sourceId that doesn’t have a stored catalog yet. If possible, log or inspect the exact JSON payload Terraform sends when creating the connection and confirm: - source_id is correct and exists. - You’re not relying on the API to “auto-discover” if that’s not supported in the path you’re using. 3. Try creating the same connection via the UI If creating the connection with the same source and streams works in the UI but fails via Terraform, that strongly suggests the Terraform/provider request body is incomplete or using an unsupported mode (for example, there is a known limitation where some sync modes are not exposed in the API, which then affects Terraform). [[API sync mode limitation](https://github.com/airbytehq/airbyte/issues/52142)] 4. Look for earlier errors in the server logs Often, before the NPE, there will be a log line indicating that discovery failed or returned an empty/invalid catalog. That will tell you whether the problem is: - Discovery failing for that source, or - The Public API not finding a catalog for the given sourceId. Because the sources don’t include the implementation of SourceServiceImpl.getSourceSchema or the exact Public API contract you’re using, I can’t point to a specific field to change in your Terraform config. If you can share: - The Terraform resource block you’re using to create the connection (with secrets redacted), and - Whether schema discovery for that source succeeds in the UI, I can help you narrow it down further within those constraints.