Thanks Petteri. I can see that this is caused by a null pointer exception after a query is executed, inside Usergrid -- but it is not clear what is going on. I should have asked for a couple of other pieces of information. This info would be helpful:
* What versions of operating system, Tomcat, Cassandra, ElasticSearch, Usergrid are you using? And this would be very very helpful: * Provide a curl command (or series of commands) that can reproduce the error Thanks, Dave On Fri, Jun 17, 2016 at 1:40 AM Petteri Sulonen < [email protected]> wrote: > Hi -- > > Here's a dump of what's in catalina.out for the problem request. > > /Petteri > > 04:44:47,649 INFO DB:536 - getColumns returned 9 columns > 04:44:47,651 INFO DB:536 - getColumns returned 9 columns > 04:44:47,653 INFO UsersResource:98 - ServiceResource.addNameParameter > 04:44:47,655 INFO UsersResource:100 - Current segment is me > 04:44:47,669 INFO DB:536 - getColumns returned 9 columns > 04:44:47,673 INFO DB:388 - getColumns cf=Entity_Dictionaries > key=b8f8f336-30c9-3553-b447-6891f3e1e6bf:permissions > 04:44:47,675 INFO DB:404 - getColumns returned 2 columns > 04:44:47,678 INFO DB:388 - getColumns cf=Entity_Dictionaries > key=2349d142-317a-11e6-9322-080027cf389a:permissions > 04:44:47,679 INFO DB:404 - getColumns returned 0 columns > 04:44:47,680 INFO DB:388 - getColumns cf=Entity_Dictionaries > key=2349d142-317a-11e6-9322-080027cf389a:rolenames > 04:44:47,682 INFO DB:404 - getColumns returned 0 columns > 04:44:47,691 INFO DB:388 - getColumns cf=Entity_Composite_Dictionaries > key=834fdec4-2e11-11e6-b255-080027cf389a:orgconfig > 04:44:47,692 INFO DB:404 - getColumns returned 0 columns > 04:44:47,711 ERROR ThrowableMapper:35 - An uncaught exception occurred > during HTTP invocation > java.lang.NullPointerException > at > > org.apache.usergrid.services.AbstractConnectionsService.getItemByName(AbstractConnectionsService.java:243) > at > > org.apache.usergrid.services.AbstractService.invokeItemWithName(AbstractService.java:771) > at > > org.apache.usergrid.services.AbstractService.invoke(AbstractService.java:728) > at > > org.apache.usergrid.services.AbstractService.invoke(AbstractService.java:645) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:245) > at > > org.apache.usergrid.services.ServiceRequest.invokeMultiple(ServiceRequest.java:281) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:248) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:212) > at > > org.apache.usergrid.rest.applications.ServiceResource.executeServiceRequest(ServiceResource.java:315) > at > > org.apache.usergrid.rest.applications.ServiceResource.executeGet(ServiceResource.java:361) > at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > > com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) > at > > com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) > at > > com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) > at > > com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) > at > > com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:927) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:875) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) > at > > org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) > at > > org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) > at > > org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) > at > > org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) > at > > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) > at > > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.usergrid.rest.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:92) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221) > at > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) > at > > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) > at > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) > at > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) > at > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) > at > > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) > at > > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) > at > org.apache.tomcat.util.net > .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > 04:44:47,714 ERROR AbstractExceptionMapper:72 - > org.apache.usergrid.rest.exceptions.UncaughtException 5XX Uncaught > Exception (500) > org.apache.usergrid.rest.exceptions.UncaughtException: > java.lang.NullPointerException > at > > org.apache.usergrid.rest.exceptions.AbstractExceptionMapper.toResponse(AbstractExceptionMapper.java:59) > at > > org.apache.usergrid.rest.exceptions.ThrowableMapper.toResponse(ThrowableMapper.java:37) > at > > com.sun.jersey.spi.container.ContainerResponse.mapException(ContainerResponse.java:480) > at > > com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException(ContainerResponse.java:417) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1477) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) > at > > com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:927) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:875) > at > > com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) > at > > org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) > at > > org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) > at > > org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) > at > > org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) > at > > org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) > at > > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) > at > > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.usergrid.rest.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:92) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221) > at > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) > at > > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) > at > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) > at > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) > at > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) > at > > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) > at > > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) > at > org.apache.tomcat.util.net > .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.lang.NullPointerException > at > > org.apache.usergrid.services.AbstractConnectionsService.getItemByName(AbstractConnectionsService.java:243) > at > > org.apache.usergrid.services.AbstractService.invokeItemWithName(AbstractService.java:771) > at > > org.apache.usergrid.services.AbstractService.invoke(AbstractService.java:728) > at > > org.apache.usergrid.services.AbstractService.invoke(AbstractService.java:645) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:245) > at > > org.apache.usergrid.services.ServiceRequest.invokeMultiple(ServiceRequest.java:281) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:248) > at > > org.apache.usergrid.services.ServiceRequest.execute(ServiceRequest.java:212) > at > > org.apache.usergrid.rest.applications.ServiceResource.executeServiceRequest(ServiceResource.java:315) > at > > org.apache.usergrid.rest.applications.ServiceResource.executeGet(ServiceResource.java:361) > at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > > com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) > at > > com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) > at > > com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) > at > > com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) > at > > com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) > at > > com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) > at > > com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) > ... 38 more > 04:44:47,717 ERROR AbstractExceptionMapper:106 - Server Error (500): > > {"error":"uncaught","timestamp":1465872287717,"duration":0,"error_description":"Internal > Server > > Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"f5752c99-31d9-11e6-b858-080027cf389a"} > > > > > On 16/06/16 22:43, Dave wrote: > > Hi Petteri, > > > > That's definitely a bug; Usergrid should never return HTTP 500 > > internal server error unless Cassandra or ElasticSearch is > > inaccessible. Is there a stack trace that goes along with that error? > > > > Dave > > > > > > On Tue, Jun 14, 2016 at 10:38 AM Petteri Sulonen > > <[email protected] <mailto:[email protected]>> > > wrote: > > > > Hi, everybody -- > > > > I'm evaluating Usergrid for our cloud services, and am starting to > > come > > to grips with it. I have a question about error handling. > > > > I've noticed that the errors Usergrid returns seem somewhat > > inconsistent. For example, when attempting to GET an entity that > > doesn't > > exist directly from the collection (omitting org and app from path > for > > clarity): > > > > GET /things/ferrari > > > > will return an error "entity_not_found", but attempting to GET the > > same > > entity through a connection where I "own" the entity: > > > > GET /users/me/owns/things/ferrari > > > > will return an "uncaught" error, with error_description "Internal > > Server > > Error." > > > > Is this intentional? I was expecting to get an "entity_not_found" > > error > > in both cases, as I think this would be a pretty common situation to > > have in a system where entities are created and deleted dynamically. > > > > (If /things/ferrari actually exists and I own it, both queries > > return it > > as expected, so that's cool.) > > > > If I've understood the design intent behind Usergrid correctly, these > > connections are extremely important because I can map permissions to > > them. Therefore it's not always possible to access objects directly > > under the collection, as the user may only have permission to access > > objects through a connection (e.g. "owns"). I like this scheme a lot, > > it's simple, intuitive, yet powerful. > > > > If I've misunderstood something, I would greatly appreciate being set > > straight. > > > > Thanks in advance, > > > > Petteri > > > > > > >
