conductor-oss / conductor-oss/java-sdk

ApiClient.applyEnvVariables() throws NullPointerException when CONDUCTOR_AUTH_KEY is not set

Aperta
#94 0 commenti 0 reazioni 1 assegnatario Rivendicata da @nthmost-orkes Vedi su GitHub
bug
Lingua principale
Java
Stelle
12
Fork
10
Merge medio
2g 8h
PR unite (30g)
4

Descrizione

## Bug

`ApiClient.applyEnvVariables()` crashes with `NullPointerException` when connecting to a plain OSS Conductor server (no auth needed). Any user who sets only `CONDUCTOR_SERVER_URL` will hit this.

**Tracked as a zero-to-one onboarding blocker in conductor-oss/getting-started#51**

## Steps to Reproduce

```bash
export CONDUCTOR_SERVER_URL=http://localhost:8080/api
# Note: no auth keys set — correct for OSS Conductor
java -cp com.netflix.conductor.sdk.examples.helloworld.Main
```

## Error

```
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException: Cannot invoke "String.trim()" because
the return value of "java.lang.System.getenv(String)" is null
at io.orkes.conductor.client.ApiClient$ApiClientBuilder.applyEnvVariables(ApiClient.java:186)
at io.orkes.conductor.client.ApiClient$ApiClientBuilder.build(ApiClient.java:175)
at io.orkes.conductor.sdk.examples.util.ClientUtil.(ClientUtil.java:27)
```

## Root Cause

In `orkes-client/src/main/java/io/orkes/conductor/client/ApiClient.java`, lines 184–196:

```java
String conductorAuthKey = System.getenv("CONDUCTOR_AUTH_KEY");
if (conductorAuthKey == null) {
conductorAuthKey = System.getenv("CONDUCTOR_SERVER_AUTH_KEY").trim(); // ← NPE if env var is also null
}

String conductorAuthSecret = System.getenv("CONDUCTOR_AUTH_SECRET");
if (conductorAuthSecret == null) {
conductorAuthSecret = System.getenv("CONDUCTOR_SERVER_AUTH_SECRET").trim(); // ← NPE if env var is also null
}
```

When neither `CONDUCTOR_AUTH_KEY` nor `CONDUCTOR_SERVER_AUTH_KEY` is set (the OSS case), `.trim()` is called on `null`.

## Fix

Null-check before `.trim()`:

```java
String conductorAuthKey = System.getenv("CONDUCTOR_AUTH_KEY");
if (conductorAuthKey == null) {
String legacyKey = System.getenv("CONDUCTOR_SERVER_AUTH_KEY");
conductorAuthKey = legacyKey != null ? legacyKey.trim() : null;
}

String conductorAuthSecret = System.getenv("CONDUCTOR_AUTH_SECRET");
if (conductorAuthSecret == null) {
String legacySecret = System.getenv("CONDUCTOR_SERVER_AUTH_SECRET");
conductorAuthSecret = legacySecret != null ? legacySecret.trim() : null;
}
```

## Impact

This crash affects **every example in the `examples` module that uses `ClientUtil`**, including the recommended `helloworld/Main.java`. OSS users have no way to run any of these examples without auth keys, which defeats the zero-to-one experience.

Zero-to-one tracking: **conductor-oss/getting-started#51**

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.