Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE when using Service resource fragment #704

Closed
rafaeltuelho opened this issue May 21, 2021 · 3 comments · Fixed by #715
Closed

NPE when using Service resource fragment #704

rafaeltuelho opened this issue May 21, 2021 · 3 comments · Fixed by #715
Assignees
Labels
bug Something isn't working
Projects
Milestone

Comments

@rafaeltuelho
Copy link

rafaeltuelho commented May 21, 2021

Description

Info

  • Eclipse JKube version : 1.3.0
  • Maven version (mvn -v) :
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/Cellar/maven/3.8.1/libexec
Java version: 11.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
  • Kubernetes / Red Hat OpenShift setup and version :
Client Version: openshift-clients-4.6.0-202006250705.p0-166-g299b6af53
Server Version: 4.7.0
Kubernetes Version: v1.20.0+bd9e442
  • If it's a bug, how to reproduce :
    just create a Service fragment in the src/main/jkube/service.yml
    with this content:
spec:
  ports:
    - name: http
  • If it's a feature request, what is your use case :

  • Sample Reproducer Project : [GitHub Clone URL]

Looking at the line where the NPE is thrown: https://github.com/eclipse/jkube/blob/v1.3.0/jkube-kit/enricher/specific/src/main/java/org/eclipse/jkube/kit/enricher/specific/ServiceDiscoveryEnricher.java#L100

The plugin expects the port as a mandatory property in the fragment. In my case I just wanna make sure the generated Service port has the right name (eg. http which is expected by the Istio Service Mesh). The portnumber is supposed to be filled automatically by the plugin.

NPE log:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:00 min
[INFO] Finished at: 2021-05-21T15:46:21-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.eclipse.jkube:openshift-maven-plugin:1.3.0:resource (default-cli) on project business-application-service: Execution default-cli of goal org.eclipse.jkube:openshift-maven-plugin:1.3.0:resource failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.jkube:openshift-maven-plugin:1.3.0:resource (default-cli) on project business-application-service: Execution default-cli of goal org.eclipse.jkube:openshift-maven-plugin:1.3.0:resource failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    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:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    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)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.eclipse.jkube:openshift-maven-plugin:1.3.0:resource failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    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:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    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)
Caused by: java.lang.NullPointerException
    at org.eclipse.jkube.kit.enricher.specific.ServiceDiscoveryEnricher.addAnnotations (ServiceDiscoveryEnricher.java:100)
    at org.eclipse.jkube.kit.enricher.specific.ServiceDiscoveryEnricher$1.visit (ServiceDiscoveryEnricher.java:89)
    at org.eclipse.jkube.kit.enricher.specific.ServiceDiscoveryEnricher$1.visit (ServiceDiscoveryEnricher.java:85)
    at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal (BaseFluent.java:135)
    at io.fabric8.kubernetes.api.builder.BaseFluent.accept (BaseFluent.java:110)
    at io.fabric8.kubernetes.api.builder.BaseFluent.accept (BaseFluent.java:13)
    at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal (BaseFluent.java:132)
    at io.fabric8.kubernetes.api.builder.BaseFluent.accept (BaseFluent.java:110)
    at org.eclipse.jkube.kit.enricher.specific.ServiceDiscoveryEnricher.create (ServiceDiscoveryEnricher.java:85)
    at org.eclipse.jkube.maven.plugin.enricher.DefaultEnricherManager.lambda$createDefaultResources$1 (DefaultEnricherManager.java:72)
    at org.eclipse.jkube.maven.plugin.enricher.DefaultEnricherManager.loop (DefaultEnricherManager.java:105)
    at org.eclipse.jkube.maven.plugin.enricher.DefaultEnricherManager.createDefaultResources (DefaultEnricherManager.java:71)
    at org.eclipse.jkube.maven.plugin.enricher.DefaultEnricherManager.createDefaultResources (DefaultEnricherManager.java:65)
    at org.eclipse.jkube.kit.resource.service.DefaultResourceService.generateAppResources (DefaultResourceService.java:92)
    at org.eclipse.jkube.kit.resource.service.DefaultResourceService.generateResources (DefaultResourceService.java:59)
    at org.eclipse.jkube.maven.plugin.mojo.build.ResourceMojo.generateResources (ResourceMojo.java:345)
    at org.eclipse.jkube.maven.plugin.mojo.build.ResourceMojo.executeInternal (ResourceMojo.java:232)
    at org.eclipse.jkube.maven.plugin.mojo.build.AbstractJKubeMojo.execute (AbstractJKubeMojo.java:97)
    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:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    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)
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
@manusa manusa added the bug Something isn't working label May 24, 2021
@manusa manusa added this to the 1.4.0 milestone May 24, 2021
@manusa manusa added this to Backlog in Sprint #202 May 24, 2021
@manusa manusa moved this from Backlog to Planned in Sprint #202 May 26, 2021
@manusa
Copy link
Member

manusa commented Jun 7, 2021

According to the OpenAPI specs and our analysis, the port (number) is a required field when defining a service.

I'm assuming from your issue description that what you want is to make sure the generated port has the name you provide in the fragment. Right?

If this is the case, it requires further analysis, since there are several Enrichers involved in the Service generation.

@rafaeltuelho
Copy link
Author

rafaeltuelho commented Jun 7, 2021

I'm assuming from your issue description that what you want is to make sure the generated port has the name you provide in the fragment. Right?

That's right, @manusa

@rohanKanojia rohanKanojia self-assigned this Jun 10, 2021
rohanKanojia added a commit to rohanKanojia/jkube that referenced this issue Jun 10, 2021
…pecified

Add a user friendly message to NPE whenever Service Port is not provided
by user in fragment

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
rohanKanojia added a commit to rohanKanojia/jkube that referenced this issue Jun 10, 2021
…pecified

Add a user friendly message to NPE whenever Service Port is not provided
by user in fragment

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
@rohanKanojia rohanKanojia moved this from Planned to Review in Sprint #202 Jun 11, 2021
Sprint #202 automation moved this from Review to Done Jun 15, 2021
manusa pushed a commit that referenced this issue Jun 15, 2021
Add a user friendly message to NPE whenever Service Port is not provided
by user in fragment

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
@manusa manusa reopened this Jun 15, 2021
@manusa
Copy link
Member

manusa commented Jun 15, 2021

The rest of issue should be addressed in #367

@manusa manusa closed this as completed Jul 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
No open projects
Sprint #202
  
Done
Development

Successfully merging a pull request may close this issue.

3 participants