projectriff / builder

Home of the buildpack builder for riff
Apache License 2.0
2 stars 10 forks source link

New buildpack in "stable" fails with Java apps #7

Closed trisberg closed 5 years ago

trisberg commented 5 years ago

This output from the logs look suspicious:

default/upper-00001-27zqg[build-step-build]: -----> riff Buildpack 1.0.0-BUILD-SNAPSHOT
default/upper-00001-27zqg[build-step-build]: -----> riff Java Invoker 0.1.2: Reusing cached launch layer
default/upper-00001-27zqg[build-step-build]: -----> Process types:
default/upper-00001-27zqg[build-step-build]:        web:      java -jar /workspace/io.projectriff.riff/riff-invoker-java/java-function-invoker-0.1.2-exec.jar $JAVA_OPTS --function.uri='file:///workspace/app?handler='
default/upper-00001-27zqg[build-step-build]:        function: java -jar /workspace/io.projectriff.riff/riff-invoker-java/java-function-invoker-0.1.2-exec.jar $JAVA_OPTS --function.uri='file:///workspace/app?handler='

The failure is:

default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: Nov 06, 2018 8:33:41 PM org.springframework.boot.SpringApplication reportFailure
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: SEVERE: Application run failed
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: java.lang.IllegalArgumentException: expected format: <jarLocation>?handler=<className>[&main=<className>]
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.util.Assert.isTrue(Assert.java:118)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at io.projectriff.invoker.FunctionEnvironmentPostProcessor.postProcessEnvironment(FunctionEnvironmentPostProcessor.java:51)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:175)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:161)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:371)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.cloud.function.deployer.ContextRunner$1.run(ContextRunner.java:74)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at java.lang.Thread.run(Thread.java:748)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: 
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: Exception in thread "main" java.lang.reflect.InvocationTargetException
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at java.lang.reflect.Method.invoke(Method.java:498)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]: Caused by: java.lang.IllegalArgumentException: expected format: <jarLocation>?handler=<className>[&main=<className>]
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.util.Assert.isTrue(Assert.java:118)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at io.projectriff.invoker.FunctionEnvironmentPostProcessor.postProcessEnvironment(FunctionEnvironmentPostProcessor.java:51)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:175)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:161)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:371)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at org.springframework.cloud.function.deployer.ContextRunner$1.run(ContextRunner.java:74)
default/upper-00001-deployment-5685c9b757-kl8tn[user-container]:    at java.lang.Thread.run(Thread.java:748)
trisberg commented 5 years ago

The template used for the above is: https://storage.googleapis.com/projectriff/riff-buildtemplate/riff-cnb-buildtemplate-0.0.1-snapshot-ci-64830c3bbc6503beafdae382ead115806fa100ca.yaml

trisberg commented 5 years ago

To reproduce:

export GCP_PROJECT=$(gcloud config get-value core/project)
export GIT_REPO=https://github.com/trisberg/upper.git
riff function create java upper --git-repo $GIT_REPO --image gcr.io/$GCP_PROJECT/upper --verbose

It works fine doing a local build with pack. I get:

-----> riff Buildpack 1.0.0-BUILD-SNAPSHOT
-----> riff Java Invoker 0.1.2: Reusing cached launch layer
-----> Process types:
       web:      java -jar /workspace/io.projectriff.riff/riff-invoker-java/java-function-invoker-0.1.2-exec.jar $JAVA_OPTS --function.uri='file:///workspace/app?handler=uppercase'
       function: java -jar /workspace/io.projectriff.riff/riff-invoker-java/java-function-invoker-0.1.2-exec.jar $JAVA_OPTS --function.uri='file:///workspace/app?handler=uppercase'
scothis commented 5 years ago

This is caused because the write-riff-toml stage is overwriting the riff.toml file that exists in the repo. We should either respect an existing riff.toml or merge new properties that are set.

I can "fix" FATS by adding the --handler flag

trisberg commented 5 years ago

Does this mean that riff.toml is no longer required? Or, is the content just ignored?

ericbottard commented 5 years ago

Does this mean that riff.toml is no longer required? Or, is the content just ignored?

Both, in effect. I think we should now consider riff.toml as something only needed when building locally with --local-path (and even, we could/should craft that file for the user IMO). The source of truth is the --xx flags

trisberg commented 5 years ago

it works when supplying --handler option; closing this issue