conductor-oss/conductor · error · RuntimeException

protogen configuration incomplete, please provide all requir

Error message

protogen configuration incomplete, please provide all required (8) inputs

What it means

Thrown as RuntimeException by ProtoGenTask.main when args is null or has fewer than 8 elements. The tool requires exactly 8 positional inputs: protoPackage, javaPackage, goPackage, protosDir, mapperDir, mapperPackage, sourceJar, sourcePackage. Fewer than 8 means configuration is incomplete, so it aborts before doing any work.

Source

Thrown at annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTask.java:107

    public void setSourcePackage(String sourcePackage) {
        this.sourcePackage = sourcePackage;
    }

    public void generate() {
        ProtoGen generator = new ProtoGen(protoPackage, javaPackage, goPackage);
        try {
            generator.processPackage(sourceJar, sourcePackage);
            generator.writeMapper(mapperDir, mapperPackage);
            generator.writeProtos(protosDir);
        } catch (IOException e) {
            System.err.printf("protogen: failed with %s\n", e);
        }
    }

    public static void main(String[] args) {
        if (args == null || args.length < 8) {
            throw new RuntimeException(
                    "protogen configuration incomplete, please provide all required (8) inputs");
        }
        ProtoGenTask task = new ProtoGenTask();
        int argsId = 0;
        task.setProtoPackage(args[argsId++]);
        task.setJavaPackage(args[argsId++]);
        task.setGoPackage(args[argsId++]);
        task.setProtosDir(new File(args[argsId++]));
        task.setMapperDir(new File(args[argsId++]));
        task.setMapperPackage(args[argsId++]);
        task.setSourceJar(new File(args[argsId++]));
        task.setSourcePackage(args[argsId]);
        System.out.println("Running protogen with arguments: " + task);
        task.generate();
        System.out.println("protogen completed.");
    }

    @Override

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Provide all 8 positional args in order: protoPackage javaPackage goPackage protosDir mapperDir mapperPackage sourceJar sourcePackage.
  2. If invoking via Gradle, audit the args = [...] list in the JavaExec/protogen task for length 8.
  3. Print the resolved task.toString() (already logged after parsing) to confirm each field is non-null.

Example fix

// before
java -cp protogen.jar com.netflix.conductor.annotationsprocessor.protogen.ProtoGenTask \
  cond.api cond.proto
// after
java -cp protogen.jar com.netflix.conductor.annotationsprocessor.protogen.ProtoGenTask \
  cond.api cond.proto cond.go ./protos ./mapper com.example.mapper ./app.jar com.example.api
Defensive patterns

Strategy: validation

Validate before calling

if (args == null || args.length < 8) {
    throw new IllegalArgumentException(
        "Usage: ProtoGenTask <protoPackage> <javaPackage> <goPackage> " +
        "<protosDir> <mapperDir> <mapperPackage> <sourceJar> <sourcePackage>");
}
// Prefer explicit named flags in a real CLI, e.g. --protoPackage=...

Prevention

When it happens

Trigger: Invoking the ProtoGenTask main/CLI with fewer than 8 arguments, or wiring a Gradle/Gradle-plugin exec task that passes a truncated argument list.

Common situations: Misconfigured build task that omits one of the 8 args (commonly goPackage or mapperPackage); a refactor of the argument order leaving a slot empty; running the jar manually without the full arg set.

Related errors


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/dabcbc7854cbcfa9. Report an issue: GitHub.