pulumi / pulumi-java

Java support for Pulumi
Apache License 2.0
69 stars 21 forks source link

pulumi up java.lang.NullPointerException #1276

Open mrge-slawek-mazur opened 10 months ago

mrge-slawek-mazur commented 10 months ago

What happened?

When doing pulumi up exception java.lang.UnsupportedOperationException is being thrown

Example

pulumi up

failed with an unhandled exception:
    java.lang.UnsupportedOperationException: Convert [com.pulumi.aws.alb.TargetGroup.targetHealthStates]: Error converting 'java.util.Collections$UnmodifiableRandomAccessList' to 'TypeShape{type=interface java.util.List, parameters=[TypeShape{type=class com.pulumi.aws.alb.outputs.TargetGroupTargetHealthState, parameters=[]}]}'. null
        at com.pulumi.serialization.internal.Converter.convertObjectUntyped(Converter.java:119)
        at com.pulumi.serialization.internal.Converter.convertValue(Converter.java:86)
        at com.pulumi.core.internal.OutputCompletionSource.setValue(OutputCompletionSource.java:95)
        at com.pulumi.deployment.internal.DeploymentImpl$ReadOrRegisterResourceInternal.lambda$completeResourceAsync$0(DeploymentImpl.java:1187)
        at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
        at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:479)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
    Caused by: java.lang.NullPointerException
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:889)
        at com.google.common.collect.ImmutableList$Builder.add(ImmutableList.java:813)
        at com.pulumi.serialization.internal.Converter.tryConvertList(Converter.java:642)
        at com.pulumi.serialization.internal.Converter.tryConvertObjectInner(Converter.java:277)
        at com.pulumi.serialization.internal.Converter.convertObjectUntyped(Converter.java:115)
        ... 10 more

Output of pulumi about

CLI
Version      3.94.2
Go Version   go1.21.4
Go Compiler  gc

Plugins
NAME  VERSION
java  unknown

Host
OS       darwin
Version  14.0
Arch     x86_64

This project is written in java: executable='/Users/slawek/.sdkman/candidates/java/11.0.2-open/bin/java' version='openjdk 11.0.2 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)' java='/Users/slawek/.sdkman/candidates/java/11.0.2-open/bin/java' javac='11.0.2' maven='Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)'

Backend
Name         Name
URL            s3://...
User           slawek
Organizations
Token type     personal

Additional context

No response

Contributing

Vote on this issue by adding a 👍 reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

justinvp commented 10 months ago

@mrge-slawek-mazur, could you share a small, self-contained program that reproduces the behavior?

cnunciato commented 10 months ago

I hit this today also I think -- this program should repro:

package myproject;

import com.pulumi.Pulumi;
import com.pulumi.awsx.lb.ApplicationLoadBalancer;
import com.pulumi.awsx.lb.ApplicationLoadBalancerArgs;
import com.pulumi.awsx.lb.inputs.ListenerArgs;

public class App {
    public static void main(String[] args) {
        Pulumi.run(ctx -> {

            var alb = new ApplicationLoadBalancer("lb", ApplicationLoadBalancerArgs.builder()
                .listener(ListenerArgs.builder()
                    .port(80)
                    .build())
                .build());

            ctx.export("endpoint", alb.loadBalancer().apply(loadBalancer -> loadBalancer.dnsName()));
        });
    }
}

Using:

<dependencies>
    <dependency>
        <groupId>com.pulumi</groupId>
        <artifactId>pulumi</artifactId>
        <version>(,1.0]</version>
    </dependency>
    <dependency>
        <groupId>com.pulumi</groupId>
        <artifactId>aws</artifactId>
        <version>(6.0.2,6.99]</version>
    </dependency>
    <dependency>
        <groupId>com.pulumi</groupId>
        <artifactId>awsx</artifactId>
        <version>(2.0.0,2.99]</version>
    </dependency>
</dependencies>
darko-pejchinov commented 9 months ago

Hi, any plans for when this might be fixed?

smsmithee commented 8 months ago

Hello, I have experienced the same issue and so far have been unable to get Pulumi to add my target group to my load balancer. I am very new to Pulumi and created a Github issue in what I now believe is the wrong place: https://github.com/pulumi/pulumi-ai/issues/66 It has Java code to reproduce this issue

justinvp commented 4 months ago

I tried @cnunciato's example and couldn't repro. But I'm using a more recent version of Java, from pulumi about:

Host
OS       darwin
Version  14.4.1
Arch     arm64

This project is written in java: executable='/opt/homebrew/opt/openjdk/bin/java' version='openjdk 18.0.2 2022-07-19
OpenJDK Runtime Environment Homebrew (build 18.0.2+0)
OpenJDK 64-Bit Server VM Homebrew (build 18.0.2+0, mixed mode, sharing)' java='/opt/homebrew/opt/openjdk/bin/java' javac='18.0.2' maven='Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)' gradle='7.5.1'

@cnunciato, does this still repro for you?