[RTFACT-12557] Nullpointer Exception in Maven GAVC Search Created: 26/Sep/16  Updated: 14/Nov/17  Resolved: 28/Sep/16

Status: Resolved
Project: Artifactory Binary Repository
Component/s: Maven, Search
Affects Version/s: 4.13.0
Fix Version/s: None

Type: Bug Priority: High
Reporter: Stephan Leicht Vogt Assignee: Unassigned
Resolution: Fixed Votes: 3
Labels: None
Environment:

Artifactory Professional
4.13.0 rev 40268
DB: Postgres


Issue Links:
Duplicate
is duplicated by RTFACT-12580 Some UI searches fail with NPE in cas... Resolved

 Description   

After upgrading to 4.13.0, searching with Maven coordinates results in a NullPointerException.
Reproducible: Always

Steps to reproduce:

  • Login and go to "Artifacts"
  • Choose the tab (Search type) "Package"
  • Choose package type "Maven GAVC"
  • Enter a term in the groupId field, example: "org.facebook4j"
  • Press Search

Expected: Results are displayed in table
Actual: Popover message appears "An unexpected error has occurred, please check Artifactory logs for further details."

Log extract:

2016-09-26 09:22:11,034 [http-nio-8081-exec-16] [ERROR] (o.a.r.c.e.GlobalExceptionMapper:48) - null
java.lang.NullPointerException: null
	at org.artifactory.addon.xray.XrayAddonImpl.isDownloadBlocked(XrayAddonImpl.java:353) ~[artifactory-addon-xray-4.13.0.jar:na]
	at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) ~[na:na]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201) ~[spring-aop-4.1.5.RELEASE.jar:4.1.5.RELEASE]
	at com.sun.proxy.$Proxy77.isDownloadBlocked(Unknown Source) ~[na:na]
	at org.artifactory.ui.rest.model.artifacts.search.BaseSearchResult.isDownloadBlockedByXray(BaseSearchResult.java:122) ~[artifactory-rest-ui-4.13.0.jar:na]
	at org.artifactory.ui.rest.model.artifacts.search.BaseSearchResult.setDownloadLink(BaseSearchResult.java:116) ~[artifactory-rest-ui-4.13.0.jar:na]
	at org.artifactory.ui.rest.model.artifacts.search.gavcsearch.GavcResult.<init>(GavcResult.java:63) ~[artifactory-rest-ui-4.13.0.jar:na]
	at org.artifactory.ui.rest.service.artifacts.search.gavcsearch.GavcSearchService.execute(GavcSearchService.java:65) ~[artifactory-rest-ui-4.13.0.jar:na]
	at org.artifactory.rest.common.service.ServiceExecutor.process(ServiceExecutor.java:38) ~[artifactory-rest-common-4.13.0.jar:na]
	at org.artifactory.rest.common.resource.BaseResource.runService(BaseResource.java:92) ~[artifactory-rest-common-4.13.0.jar:na]
	at org.artifactory.ui.rest.resource.artifacts.search.ArtifactSearchResource.gavcSearch(ArtifactSearchResource.java:84) ~[artifactory-rest-ui-4.13.0.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101]
	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) [jersey-servlet-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) [jersey-servlet-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) [jersey-servlet-1.19.jar:1.19]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.32]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
	at org.artifactory.webapp.servlet.RepoFilter.execute(RepoFilter.java:200) [artifactory-web-application-4.13.0.jar:na]
	at org.artifactory.webapp.servlet.RepoFilter.doFilter(RepoFilter.java:91) [artifactory-web-application-4.13.0.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
	at org.artifactory.webapp.servlet.AccessFilter.useAuthentication(AccessFilter.java:391) [artifactory-web-application-4.13.0.jar:na]
	at org.artifactory.webapp.servlet.AccessFilter.doFilterInternal(AccessFilter.java:206) [artifactory-web-application-4.13.0.jar:na]
	at org.artifactory.webapp.servlet.AccessFilter.doFilter(AccessFilter.java:160) [artifactory-web-application-4.13.0.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
	at org.artifactory.webapp.servlet.RequestFilter.doFilter(RequestFilter.java:61) [artifactory-web-application-4.13.0.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
	at org.artifactory.webapp.servlet.ArtifactoryFilter.doFilter(ArtifactoryFilter.java:111) [artifactory-web-application-4.13.0.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.32]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.32]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.32]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.32]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.32]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [catalina.jar:8.0.32]
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-coyote.jar:8.0.32]
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-coyote.jar:8.0.32]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-coyote.jar:8.0.32]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-coyote.jar:8.0.32]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.32]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]


 Comments   
Comment by Ronald Brindl [ 27/Sep/16 ]

We got the same problem:

Reproduce:
In artifactory go to package search, package type "Maven GAVC". Search for anything that will produce a result.
The search will fail with

An unexpected error has occurred, please check Artifactory logs for further details.

Stacktrace in log is the same as in OP.

  • I did not check if this depends on the cluster node, but I doubt it from what I read in the stacktrace.
  • DOES NOT occur if the search result cannot possibly contain anything (like searching for com.compuware artifacts in ext-local repos)
  • occurs if I search all repos or just a single one (did not try all repos, but some of them), as long as the repository matches at least one item (if not, you get the normal message that the search did not produce any result)
  • DOES NOT occur with "Quick Search".

Setup:

  • Artifactory Enterprise 4.13.0 rev 40268
  • 3 cluster nodes, haproxy loadbalancer, postgres database.
  • We are NOT using xray
Comment by Tomer Cohen [ 28/Sep/16 ]

Hi Team,

Approximately when do you expect this issue to be released?

Generated at Tue Oct 22 05:54:07 UTC 2019 using JIRA 7.6.16#76018-sha1:9ed376192612a49536ac834c64177a0fed6290f5.