AtlasOfLivingAustralia / avh-hub

Australian Virtual Herbarium
https://avh.ala.org.au
Mozilla Public License 2.0
4 stars 2 forks source link

Calls to facets.json are syntactically incorrect #95

Closed ansell closed 7 months ago

ansell commented 5 years ago

Biocache-service is receiving queries of the following format from avh.ala.org.au. They are errorring out and returning HTTP 500 with a stacktrace during databinding for beans:

https://biocache-ws.ala.org.au/ws/occurrence/facets.json?q=lsid%3Ahttp%3A%2F%2Fid.biodiversity.org.au%2Fnode%2Fapni%2F6719673+AND+collector_text%3AGill&fq%5B%5D=collector%3A%22Gill%2C+B.%22&fq%5B%5D=cl927%3A%22Northern+Territory+(including+Coastal+Waters)%22&qc=data_hub_uid%3Adh9&wkt=MULTIPOLYGON(((133.207946754992+-21.937271003911988,133.207946754992%20-23.003234011172456,135.844665504992%20-23.003234011172456,135.844665504992%20-21.937271003911988,133.207946754992%20-21.937271003911988)))&facets=taxon_name&callback=jQuery112409480324381775206_1558316645552&_=1558316645555
[REDACTED] - - [20/May/2019:11:48:00 +1000] "GET /ws/occurrence/facets.json?q=lsid%3Ahttp%3A%2F%2Fid.biodiversity.org.au%2Fnode%2Fapni%2F6719673+AND+collector_text%3AGill&fq%5B%5D=collector%3A%22Gill%2C+B.%22&fq%5B%5D=cl927%3A%22Northern+Territory+(including+Coastal+Waters)%22&qc=data_hub_uid%3Adh9&wkt=MULTIPOLYGON(((133.207946754992+-21.937271003911988,133.207946754992%20-23.003234011172456,135.844665504992%20-23.003234011172456,135.844665504992%20-21.937271003911988,133.207946754992%20-21.937271003911988)))&facets=taxon_name&callback=jQuery112409480324381775206_1558316645552&_=1558316645555 HTTP/1.1" 500 10571 "https://avh.ala.org.au/" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0" "[REDACTED]" request_time=0.033 upstream_response_time=0.036 upstream_connect_time=0.004 upstream_header_time=0.032 upstream_cache_status=MISS
jQuery112409480324381775206_1558316645552({"error":{"stackTrace":[{"methodName":"forInputString","fileName":"NumberFormatException.java","lineNumber":65,"className":"java.lang.NumberFormatException","nativeMethod":false},{"methodName":"parseInt","fileName":"Integer.java","lineNumber":592,"className":"java.lang.Integer","nativeMethod":false},{"methodName":"parseInt","fileName":"Integer.java","lineNumber":615,"className":"java.lang.Integer","nativeMethod":false},{"methodName":"setPropertyValue","fileName":"BeanWrapperImpl.java","lineNumber":951,"className":"org.springframework.beans.BeanWrapperImpl","nativeMethod":false},{"methodName":"setPropertyValue","fileName":"BeanWrapperImpl.java","lineNumber":904,"className":"org.springframework.beans.BeanWrapperImpl","nativeMethod":false},{"methodName":"setPropertyValues","fileName":"AbstractPropertyAccessor.java","lineNumber":75,"className":"org.springframework.beans.AbstractPropertyAccessor","nativeMethod":false},{"methodName":"applyPropertyValues","fileName":"DataBinder.java","lineNumber":740,"className":"org.springframework.validation.DataBinder","nativeMethod":false},{"methodName":"doBind","fileName":"DataBinder.java","lineNumber":636,"className":"org.springframework.validation.DataBinder","nativeMethod":false},{"methodName":"doBind","fileName":"WebDataBinder.java","lineNumber":191,"className":"org.springframework.web.bind.WebDataBinder","nativeMethod":false},{"methodName":"bind","fileName":"ServletRequestDataBinder.java","lineNumber":112,"className":"org.springframework.web.bind.ServletRequestDataBinder","nativeMethod":false},{"methodName":"bindRequestParameters","fileName":"ServletModelAttributeMethodProcessor.java","lineNumber":150,"className":"org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor","nativeMethod":false},{"methodName":"resolveArgument","fileName":"ModelAttributeMethodProcessor.java","lineNumber":111,"className":"org.springframework.web.method.annotation.ModelAttributeMethodProcessor","nativeMethod":false},{"methodName":"resolveArgument","fileName":"HandlerMethodArgumentResolverComposite.java","lineNumber":77,"className":"org.springframework.web.method.support.HandlerMethodArgumentResolverComposite","nativeMethod":false},{"methodName":"getMethodArgumentValues","fileName":"InvocableHandlerMethod.java","lineNumber":161,"className":"org.springframework.web.method.support.InvocableHandlerMethod","nativeMethod":false},{"methodName":"invokeForRequest","fileName":"InvocableHandlerMethod.java","lineNumber":128,"className":"org.springframework.web.method.support.InvocableHandlerMethod","nativeMethod":false},{"methodName":"invokeAndHandle","fileName":"ServletInvocableHandlerMethod.java","lineNumber":104,"className":"org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod","nativeMethod":false},{"methodName":"invokeHandleMethod","fileName":"RequestMappingHandlerAdapter.java","lineNumber":743,"className":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter","nativeMethod":false},{"methodName":"handleInternal","fileName":"RequestMappingHandlerAdapter.java","lineNumber":672,"className":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter","nativeMethod":false},{"methodName":"handle","fileName":"AbstractHandlerMethodAdapter.java","lineNumber":82,"className":"org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter","nativeMethod":false},{"methodName":"doDispatch","fileName":"DispatcherServlet.java","lineNumber":933,"className":"org.springframework.web.servlet.DispatcherServlet","nativeMethod":false},{"methodName":"doService","fileName":"DispatcherServlet.java","lineNumber":867,"className":"org.springframework.web.servlet.DispatcherServlet","nativeMethod":false},{"methodName":"processRequest","fileName":"FrameworkServlet.java","lineNumber":951,"className":"org.springframework.web.servlet.FrameworkServlet","nativeMethod":false},{"methodName":"doGet","fileName":"FrameworkServlet.java","lineNumber":842,"className":"org.springframework.web.servlet.FrameworkServlet","nativeMethod":false},{"methodName":"service","fileName":"HttpServlet.java","lineNumber":624,"className":"javax.servlet.http.HttpServlet","nativeMethod":false},{"methodName":"service","fileName":"FrameworkServlet.java","lineNumber":827,"className":"org.springframework.web.servlet.FrameworkServlet","nativeMethod":false},{"methodName":"service","fileName":"HttpServlet.java","lineNumber":731,"className":"javax.servlet.http.HttpServlet","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":303,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"WsFilter.java","lineNumber":52,"className":"org.apache.tomcat.websocket.server.WsFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"SimpleCORSFilter.java","lineNumber":33,"className":"au.org.ala.biocache.web.SimpleCORSFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"LoggerConfigFilter.java","lineNumber":26,"className":"au.org.ala.biocache.web.LoggerConfigFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"JsonpFilter.java","lineNumber":52,"className":"au.org.ala.web.filter.JsonpFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"obtainContent","fileName":"SiteMeshFilter.java","lineNumber":129,"className":"com.opensymphony.sitemesh.webapp.SiteMeshFilter","nativeMethod":false},{"methodName":"doFilter","fileName":"SiteMeshFilter.java","lineNumber":77,"className":"com.opensymphony.sitemesh.webapp.SiteMeshFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilterInternal","fileName":"CharacterEncodingFilter.java","lineNumber":88,"className":"org.springframework.web.filter.CharacterEncodingFilter","nativeMethod":false},{"methodName":"doFilter","fileName":"OncePerRequestFilter.java","lineNumber":106,"className":"org.springframework.web.filter.OncePerRequestFilter","nativeMethod":false},{"methodName":"internalDoFilter","fileName":"ApplicationFilterChain.java","lineNumber":241,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"doFilter","fileName":"ApplicationFilterChain.java","lineNumber":208,"className":"org.apache.catalina.core.ApplicationFilterChain","nativeMethod":false},{"methodName":"invoke","fileName":"StandardWrapperValve.java","lineNumber":221,"className":"org.apache.catalina.core.StandardWrapperValve","nativeMethod":false},{"methodName":"invoke","fileName":"StandardContextValve.java","lineNumber":122,"className":"org.apache.catalina.core.StandardContextValve","nativeMethod":false},{"methodName":"invoke","fileName":"AuthenticatorBase.java","lineNumber":505,"className":"org.apache.catalina.authenticator.AuthenticatorBase","nativeMethod":false},{"methodName":"invoke","fileName":"StandardHostValve.java","lineNumber":169,"className":"org.apache.catalina.core.StandardHostValve","nativeMethod":false},{"methodName":"invoke","fileName":"ErrorReportValve.java","lineNumber":103,"className":"org.apache.catalina.valves.ErrorReportValve","nativeMethod":false},{"methodName":"invoke","fileName":"StandardEngineValve.java","lineNumber":116,"className":"org.apache.catalina.core.StandardEngineValve","nativeMethod":false},{"methodName":"service","fileName":"CoyoteAdapter.java","lineNumber":436,"className":"org.apache.catalina.connector.CoyoteAdapter","nativeMethod":false},{"methodName":"process","fileName":"AbstractHttp11Processor.java","lineNumber":1078,"className":"org.apache.coyote.http11.AbstractHttp11Processor","nativeMethod":false},{"methodName":"process","fileName":"AbstractProtocol.java","lineNumber":625,"className":"org.apache.coyote.AbstractProtocol$AbstractConnectionHandler","nativeMethod":false},{"methodName":"run","fileName":"JIoEndpoint.java","lineNumber":316,"className":"org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor","nativeMethod":false},{"methodName":"runWorker","fileName":"ThreadPoolExecutor.java","lineNumber":1149,"className":"java.util.concurrent.ThreadPoolExecutor","nativeMethod":false},{"methodName":"run","fileName":"ThreadPoolExecutor.java","lineNumber":624,"className":"java.util.concurrent.ThreadPoolExecutor$Worker","nativeMethod":false},{"methodName":"run","fileName":"TaskThread.java","lineNumber":61,"className":"org.apache.tomcat.util.threads.TaskThread$WrappingRunnable","nativeMethod":false},{"methodName":"run","fileName":"Thread.java","lineNumber":748,"className":"java.lang.Thread","nativeMethod":false}],"message":"For input string: \"\"","localizedMessage":"For input string: \"\"","suppressed":[]}});

Changing the URL to the following seems to fix the issue, where the only change is from fq[] to fq (removing the square brackets):

https://biocache-ws.ala.org.au/ws/occurrence/facets.json?q=lsid%3Ahttp%3A%2F%2Fid.biodiversity.org.au%2Fnode%2Fapni%2F6719673+AND+collector_text%3AGill&fq=collector%3A%22Gill%2C+B.%22&fq=cl927%3A%22Northern+Territory+(including+Coastal+Waters)%22&qc=data_hub_uid%3Adh9&wkt=MULTIPOLYGON(((133.207946754992+-21.937271003911988,133.207946754992%20-23.003234011172456,135.844665504992%20-23.003234011172456,135.844665504992%20-21.937271003911988,133.207946754992%20-21.937271003911988)))&facets=taxon_name&callback=jQuery112409480324381775206_1558316645552&_=1558316645555
nickdos commented 5 years ago

I couldn't see a referrer URL - any idea of the page that is making this WS call?

ansell commented 5 years ago

The referer is limited to https://avh.ala.org.au/ in the nginx line above (the one starting with REDACTED, where the users IP address was). Kibana should show what the original page was, but I don't have a chance to look into it at the moment.

adam-collins commented 7 months ago

I tried to reproduce the faulty fq by selecting from both the left hand side checkbox and the facet popup listing. Also nothing in any recent log.

I expect it is now fixed.