Telenav / cactus

Modules for building the KivaKit Java framework.
Apache License 2.0
0 stars 1 forks source link

safety-service build failed due to cactus exception #71

Closed jonathanl-telenav closed 2 years ago

jonathanl-telenav commented 2 years ago

This build:

http://ec2d-nav-kafka-01.dev.mypna.com:8080/job/safety-service-pipelines/job/SafetyServiceGithubChecks/view/change-requests/job/PR-111/10/console

failed because of this:


[INFO] --- cactus-maven-plugin:1.5.32:build-metadata (project-metadata) @ safety-service-store ---
Sep 23, 2022 11:43:48 AM com.zaxxer.nuprocess.internal.BasePosixProcess callStart
WARNING: Exception thrown from handler
java.lang.NullPointerException: Cannot invoke "com.zaxxer.nuprocess.NuProcessHandler.onStart(com.zaxxer.nuprocess.NuProcess)" because "this.processHandler" is null
    at com.zaxxer.nuprocess.internal.BasePosixProcess.callStart(BasePosixProcess.java:587)
    at com.zaxxer.nuprocess.linux.LinuxProcess.start(LinuxProcess.java:80)
    at com.zaxxer.nuprocess.linux.LinProcessFactory.createProcess(LinProcessFactory.java:40)
    at com.zaxxer.nuprocess.NuProcessBuilder.start(NuProcessBuilder.java:259)
    at com.telenav.cactus.cli.CliCommand.lambda$launch$3(CliCommand.java:173)
    at com.mastfrog.function.throwing.ThrowingFunction.lambda$toNonThrowing$0(ThrowingFunction.java:63)
    at java.base/java.util.Optional.map(Optional.java:260)
    at com.mastfrog.function.optional.ThrowingOptionalWrapper.map(ThrowingOptionalWrapper.java:87)
    at com.mastfrog.function.optional.ThrowingOptionalWrapper.map(ThrowingOptionalWrapper.java:27)
    at com.telenav.cactus.cli.CliCommand.launch(CliCommand.java:162)
    at com.telenav.cactus.cli.CliCommand.lambda$run$0(CliCommand.java:116)
    at com.mastfrog.concurrent.future.AwaitableCompletionStage.from(AwaitableCompletionStage.java:53)
    at com.telenav.cactus.cli.CliCommand.run(CliCommand.java:114)
    at com.telenav.cactus.git.GitCheckout.head(GitCheckout.java:984)
    at com.telenav.cactus.maven.BuildMetadataMojo.lambda$performTasks$1(BuildMetadataMojo.java:108)
    at java.base/java.util.Optional.ifPresent(Optional.java:178)
    at com.telenav.cactus.maven.BuildMetadataMojo.performTasks(BuildMetadataMojo.java:105)
    at com.telenav.cactus.maven.mojobase.BaseMojo.lambda$run$3(BaseMojo.java:659)
    at com.telenav.cactus.maven.log.BuildLog.lambda$run$0(BuildLog.java:140)
    at com.telenav.cactus.maven.log.BuildLog.withLog(BuildLog.java:88)
    at com.telenav.cactus.maven.log.BuildLog.run(BuildLog.java:136)
    at com.telenav.cactus.maven.mojobase.BaseMojo.run(BaseMojo.java:656)
    at com.telenav.cactus.maven.mojobase.BaseMojo.execute(BaseMojo.java:360)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:972)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
timboudreau commented 2 years ago

The exception you're seeing is just logged by nuprocess (it is some sort of race, or hitting the OS's ulimit for open file handles - it called native code to create a process and the OS didn't create one). NuProcess logs an exception in that case and returns null from ProcessBuilder.start(). It seems only to occur when the build is starting a lot of processes in a very short time period.

We already have a retry loop to handle when that happens (it seems to be Linux-specific - I've only seen it on github builders, and now this machine - never reproduced it locally, but that's not surprising on Mac OS).

I did notice it disappeared on github builders when I changed them to use JDK 17 instead of JDK 11. What JDK does this build use?

We could prevent the exception from being logged by either configuring java.util.logging to quiet their logger, or reaching reflectively into the logger field in NuProcess's classes and setting its level, but

Anyway, all of that is irrelevant here: the build failure is uncompilable Java sources - nothing to do with Cactus:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /data/01/home/jenkins/workspace/SafetyServiceGithubChecks_PR-111/store/src/main/java/com/telenav/scout/safety/service/store/parking/incident/stores/pinot/PinotParkingSafetyIncidentStore.java:[65,30] cannot find symbol
  symbol:   method asSimpleString()
  location: class com.telenav.kivakit.core.value.count.Maximum
[ERROR] /data/01/home/jenkins/workspace/SafetyServiceGithubChecks_PR-111/store/src/main/java/com/telenav/scout/safety/service/store/driving/incident/stores/pinot/PinotDrivingSafetyIncidentStore.java:[75,50] cannot find symbol
  symbol:   method asSimpleString()
  location: class com.telenav.kivakit.core.value.count.Maximum