You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@usergrid.apache.org by Petteri Sulonen <pe...@avaintec.com> on 2016/06/14 14:38:37 UTC
Question about error handling
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
Re: Question about error handling
Posted by Dave <sn...@gmail.com>.
Tracking this as USERGRID-1304
HTTP 500 error when retrieving Entity via connection
https://issues.apache.org/jira/browse/USERGRID-1304
On Mon, Jun 20, 2016 at 3:55 PM Petteri Sulonen <
petteri.sulonen@avaintec.com> wrote:
> I noticed copy-pasting from my terminal screwed up the formatting.
> Here's a cleaned-up version of the curls; sorry about any confusion I
> may have caused:
>
> curl -X POST "http://localhost/udwc/brikoleur/token" -d '{ "grant_type"
> : "password", "username" : "abogdanov", "password" : "thepassword" }'
>
>
> {"access_token":"YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE","expires_in":604800,"user":{"uuid":"2349d142-317a-11e6-9322-080027cf389a","type":"user","name":"Alexander
>
> Bogdanov","created":1465831132919,"modified":1465841524921,"username":"abogdanov","email":"
> psulonen@gmail.com","activated":true,"picture":"
> http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865
> ","metadata":{"size":608},"repeatPassword":"thepassword"}}
>
> curl --header "Authorization: Bearer
> YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE"
> "http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari"
>
>
> {"error":"uncaught","timestamp":1466432732273,"duration":0,"error_description":"Internal
> Server
>
> Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"d87217ed-36f2-11e6-b273-080027cf389a"}
>
> BR, Petteri
>
> On 20/06/16 16:28, Petteri Sulonen wrote:
> > (1) Ubuntu 16.04 (64 bit, server), Tomcat 7.0.68, Cassandra 2.2.6,
> > Elasticsearch 1.4.4.
> > (2) Here are the curls, with responses. Note that I've set up rights
> > as described in my original mail. I've also put Usergride behind
> > Apache so it listens at port 80.
> >
> > root@vmu-psulonen2:~# curl -X POST
> > "http://localhost/udwc/brikoleur/token
> > <http://localhost/udwc/brikoleur/token>" -d '{ "grant_type" :
> > "password", "username" : "abogdanov", "password" : "thepassword" }'
> >
> {"access_token":"YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE","expires_in":604800,"user":{"uuid":"2349d142-317a-11e6-9322-080027cf389a","type":"user","name":"Alexander
> >
> Bogdanov","created":1465831132919,"modified":1465841524921,"username":"abogdanov","email":"
> psulonen@gmail.com
> > <ma...@gmail.com>","activated":true,"picture":"
> http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865
> > <http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865
> >","metadata":{"size":608},"repeatPassword":"thepassword"}}root@vmu-psulonen2
> :~#
> >
> > root@vmu-psulonen2:~# curl --header "Authorization: Bearer
> > YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE"
> > "http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari
> > <http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari>"
> >
> {"error":"uncaught","timestamp":1466432732273,"duration":0,"error_description":"Internal
> > Server
> >
> Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"d87217ed-36f2-11e6-b273-080027cf389a"}root@vmu-psulonen2
> :~#
> >
> > BR, Petteri
> >
> > On 20/06/16 15:36, Dave wrote:
> >> 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
> >> <petteri.sulonen@avaintec.com <ma...@avaintec.com>>
> >> 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
> >> <http://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
> >> <http://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
> >> > <petteri.sulonen@avaintec.com
> >> <ma...@avaintec.com>
> >> <mailto:petteri.sulonen@avaintec.com
> >> <ma...@avaintec.com>>>
> >> > 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
> >> >
> >> >
> >>
> >>
> >
> >
>
>
>
Re: Question about error handling
Posted by Petteri Sulonen <pe...@avaintec.com>.
I noticed copy-pasting from my terminal screwed up the formatting.
Here's a cleaned-up version of the curls; sorry about any confusion I
may have caused:
curl -X POST "http://localhost/udwc/brikoleur/token" -d '{ "grant_type"
: "password", "username" : "abogdanov", "password" : "thepassword" }'
{"access_token":"YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE","expires_in":604800,"user":{"uuid":"2349d142-317a-11e6-9322-080027cf389a","type":"user","name":"Alexander
Bogdanov","created":1465831132919,"modified":1465841524921,"username":"abogdanov","email":"psulonen@gmail.com","activated":true,"picture":"http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865","metadata":{"size":608},"repeatPassword":"thepassword"}}
curl --header "Authorization: Bearer
YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE"
"http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari"
{"error":"uncaught","timestamp":1466432732273,"duration":0,"error_description":"Internal
Server
Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"d87217ed-36f2-11e6-b273-080027cf389a"}
BR, Petteri
On 20/06/16 16:28, Petteri Sulonen wrote:
> (1) Ubuntu 16.04 (64 bit, server), Tomcat 7.0.68, Cassandra 2.2.6,
> Elasticsearch 1.4.4.
> (2) Here are the curls, with responses. Note that I've set up rights
> as described in my original mail. I've also put Usergride behind
> Apache so it listens at port 80.
>
> root@vmu-psulonen2:~# curl -X POST
> "http://localhost/udwc/brikoleur/token
> <http://localhost/udwc/brikoleur/token>" -d '{ "grant_type" :
> "password", "username" : "abogdanov", "password" : "thepassword" }'
> {"access_token":"YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE","expires_in":604800,"user":{"uuid":"2349d142-317a-11e6-9322-080027cf389a","type":"user","name":"Alexander
> Bogdanov","created":1465831132919,"modified":1465841524921,"username":"abogdanov","email":"psulonen@gmail.com
> <ma...@gmail.com>","activated":true,"picture":"http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865
> <http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865>","metadata":{"size":608},"repeatPassword":"thepassword"}}root@vmu-psulonen2:~#
>
> root@vmu-psulonen2:~# curl --header "Authorization: Bearer
> YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE"
> "http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari
> <http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari>"
> {"error":"uncaught","timestamp":1466432732273,"duration":0,"error_description":"Internal
> Server
> Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"d87217ed-36f2-11e6-b273-080027cf389a"}root@vmu-psulonen2:~#
>
> BR, Petteri
>
> On 20/06/16 15:36, Dave wrote:
>> 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
>> <petteri.sulonen@avaintec.com <ma...@avaintec.com>>
>> 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
>> <http://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
>> <http://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
>> > <petteri.sulonen@avaintec.com
>> <ma...@avaintec.com>
>> <mailto:petteri.sulonen@avaintec.com
>> <ma...@avaintec.com>>>
>> > 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
>> >
>> >
>>
>>
>
>
Re: Question about error handling
Posted by Petteri Sulonen <pe...@avaintec.com>.
(1) Ubuntu 16.04 (64 bit, server), Tomcat 7.0.68, Cassandra 2.2.6,
Elasticsearch 1.4.4.
(2) Here are the curls, with responses. Note that I've set up rights as
described in my original mail. I've also put Usergride behind Apache so
it listens at port 80.
root@vmu-psulonen2:~# curl -X POST
"http://localhost/udwc/brikoleur/token
<http://localhost/udwc/brikoleur/token>" -d '{ "grant_type" :
"password", "username" : "abogdanov", "password" : "thepassword" }'
{"access_token":"YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE","expires_in":604800,"user":{"uuid":"2349d142-317a-11e6-9322-080027cf389a","type":"user","name":"Alexander
Bogdanov","created":1465831132919,"modified":1465841524921,"username":"abogdanov","email":"psulonen@gmail.com
<ma...@gmail.com>","activated":true,"picture":"http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865
<http://www.gravatar.com/avatar/fd1ebc06694e703c1b0c64215890a865>","metadata":{"size":608},"repeatPassword":"thepassword"}}root@vmu-psulonen2:~#
root@vmu-psulonen2:~# curl --header "Authorization: Bearer
YWMtpgdKYDbyEeaD2zHg-adLzwAAAVWSPvYGkxL-sP9RrdRTbAGgQJijcOXcApE"
"http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari
<http://localhost/udwc/brikoleur/users/abogdanov/owns/things/ferrari>"
{"error":"uncaught","timestamp":1466432732273,"duration":0,"error_description":"Internal
Server
Error","exception":"org.apache.usergrid.rest.exceptions.UncaughtException","error_id":"d87217ed-36f2-11e6-b273-080027cf389a"}root@vmu-psulonen2:~#
BR, Petteri
On 20/06/16 15:36, Dave wrote:
> 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
> <petteri.sulonen@avaintec.com <ma...@avaintec.com>>
> 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
> <http://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
> <http://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
> > <petteri.sulonen@avaintec.com
> <ma...@avaintec.com>
> <mailto:petteri.sulonen@avaintec.com
> <ma...@avaintec.com>>>
> > 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
> >
> >
>
>
Re: Question about error handling
Posted by Dave <sn...@gmail.com>.
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 <
petteri.sulonen@avaintec.com> 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
> > <petteri.sulonen@avaintec.com <ma...@avaintec.com>>
> > 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
> >
> >
>
>
>
Re: Question about error handling
Posted by Petteri Sulonen <pe...@avaintec.com>.
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
> <petteri.sulonen@avaintec.com <ma...@avaintec.com>>
> 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
>
>
Re: Question about error handling
Posted by Dave <sn...@gmail.com>.
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 <
petteri.sulonen@avaintec.com> 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
>
>
>