NullPointerException when accessing Airbyte API endpoints after upgrade

Summary

After upgrading Airbyte to the latest version, encountering a NullPointerException when accessing certain API endpoints that list resources. The error is not explicit and occurs specifically in the ConnectionServiceImpl. Looking for assistance in identifying the issue.


Question

Hello!
I upgrade our OSS k8s install of Airbyte to the latest version (chart 0.53.137and containers in 0.50.48, and all source/destinations in their respective latest versions). After setting a port-forward to the API server, I manage to get a 200 when reaching GET <http://localhost:8006/health> or retrieving a specific resource (GET <http://localhost:8006/v1/workspaces/>&lt;workspace_id&gt;). However, for other endpoint that list resources (workspaces, connections, sources), I get a 500 error. Looking at the log, I get a NullPointerException that is not really explicit.
Here is an example log for GET <http://localhost:8006/v1/connections>:

java.lang.NullPointerException: null
	at io.airbyte.api.server.services.ConnectionServiceImpl.listConnectionsForWorkspaces(ConnectionService.kt:251) ~[io.airbyte-airbyte-api-server-0.50.48.jar:?]
	at io.airbyte.api.server.controllers.ConnectionsController.listConnections$lambda$9(ConnectionsController.kt:232) ~[io.airbyte-airbyte-api-server-0.50.48.jar:?]
	at io.airbyte.api.server.apiTracking.TrackingHelper.callWithTracker(TrackingHelper.kt:107) ~[io.airbyte-airbyte-api-server-0.50.48.jar:?]
	at io.airbyte.api.server.controllers.ConnectionsController.listConnections(ConnectionsController.kt:231) ~[io.airbyte-airbyte-api-server-0.50.48.jar:?]
	at io.airbyte.api.server.controllers.$ConnectionsController$Definition$Exec.dispatch(Unknown Source) ~[io.airbyte-airbyte-api-server-0.50.48.jar:?]
	at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invoke(AbstractExecutableMethodsDefinition.java:371) ~[micronaut-inject-3.10.1.jar:3.10.1]
	at io.micronaut.context.DefaultBeanContext$4.invoke(DefaultBeanContext.java:594) ~[micronaut-inject-3.10.1.jar:3.10.1]
	at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:303) ~[micronaut-router-3.10.1.jar:3.10.1]
	at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:111) ~[micronaut-router-3.10.1.jar:3.10.1]
	at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:103) ~[micronaut-http-3.10.1.jar:3.10.1]
	at io.micronaut.http.server.RouteExecutor.lambda$executeRoute$14(RouteExecutor.java:659) ~[micronaut-http-server-3.10.1.jar:3.10.1]
	at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:49) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:194) ~[reactor-core-3.5.5.jar:3.5.5]
	at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62) ~[micronaut-runtime-3.10.1.jar:3.10.1]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84) ~[reactor-core-3.5.5.jar:3.5.5]
	at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37) ~[reactor-core-3.5.5.jar:3.5.5]
	at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedCallable.call(InvocationInstrumenterWrappedCallable.java:53) ~[micronaut-context-3.10.1.jar:3.10.1]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
	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) [?:?]```
Would you know what could be the issue here ?
Thank you by advance,
Louis

<br>

---

This topic has been created from a Slack thread to give it more visibility.
It will be on Read-Only mode here. [Click here](https://airbytehq.slack.com/archives/C021JANJ6TY/p1707760118125139) if you want to access the original thread.

[Join the conversation on Slack](https://slack.airbyte.com)

<sub>
["nullpointerexception", "airbyte-api", "upgrade", "kubernetes", "api-endpoints", "list-resources"]
</sub>

I didn’t try this version yet, will give a shot later and return to you

Hello <@U01MMSDJGC9>, do you have any news regarding the potential causes of this issue ?

FYI, I had a doubt it was somehow my database schema that was messed-up. I erased my database and restarted my instance, and still get the exact same error with a fresh empty database.

Hey didn’t test yet, 1 sec!

my-airbyte      a53227          1               2024-02-16 18:33:26.927223 -0300 -03    deployed        airbyte-0.53.227        0.50.50  ```
is working for me :slightly_smiling_face:

I just did a complete fresh install (new install, empty buckets, empty database), and I still get the error. Is your install local or cloud-based ?

Hello <@U01MMSDJGC9>,
I was able to make some progress and pin point what was going wrong. Basically, if I pass the workspace IDs, my call is successful. So it seems that this is <airbyte-platform/airbyte-api-server/src/main/kotlin/io/airbyte/api/server/services/ConnectionService.kt at f194a0fe4036a00b752a74e6b57427e7668a47c7 · airbytehq/airbyte-platform · GitHub call> returns no workspace, because it is unable to get my user info. If I pass authorization headers it also works. Previously I assume it was somehow able to find my user as default, but it is no longer the case. Do you know how I can set the default user on Helm install or make workspace global maybe ?

Can you share one example of request you’re doing now?

Do you know how I can set the default user on Helm install or make workspace global maybe ?
you shouldn’t and can’t configure this in the helm

Same request that you did. It used to work before upgrade, but now I need to either provide basic auth headers or a list of workspace Ids in parameters.

thank you for raising this <@U042YPXU4DV>, i was breaking my head for 5 hours.

...                 security=shared.Security(
...         basic_auth=shared.SchemeBasicAuth(
...             password="<YOUR_PASSWORD_HERE>",
...             username="<YOUR_USERNAME_HERE>",
...         ),
...     ),)```
worked, nothing else did

<@U01MMSDJGC9> please add it to the docs, its really frustrating to get 500s for no reason