conductor-oss / conductor-oss/java-sdk

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

Offen
#94 0 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @nthmost-orkes Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
12
Forks
10
Ø Merge
2 T. 8 Std.
Gemergte PRs (30 T.)
4

Beschreibung

## 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**

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.