Rod Simpson created USERGRID-63:
-----------------------------------

             Summary: JSON parse failure on POST should not return HTTP 500 
error
                 Key: USERGRID-63
                 URL: https://issues.apache.org/jira/browse/USERGRID-63
             Project: Usergrid
          Issue Type: Story
          Components: Stack
            Reporter: Rod Simpson


"Uatempting to POST data to /mcit/system.v1/errorlog and there is a problem in 
the JSON they are posting. We are incorrectly returning a 500 error and we 
should be giving them a 400 with an informative JSON parse failure error 
message instead. 

Here's the POST in the access log: 

192.168.78.222 - - [25/Nov/2013:13:56:11 +0000] ""POST /mcit/system.v1/errorlog 
HTTP/1.1"" 500 309 25 - application/json 
Host: rtc02usergrid Name: /var/log/tomcat7/localhost_access_log.2013-11-25.txt 
Category: eu-west-1c-production-morrison-usergrid_tomcat 
accept_header: - content_type: application/json date: 25/Nov/2013:13:56:11 
+0000 method: POST request: HTTP/1.1 request_time_ms: 25 size: 309 src_ip: 
192.168.78.222 status: 500 url: /mcit/system.v1/errorlog 


Here's the post in the catalina.out log: 

2013-11-25 13:56:11,891 ERROR (http-bio-8080-exec-2835) [package 
org.usergrid.rest.exceptions] - org.codehaus.jackson.JsonParseException Server 
Error (500) 
org.codehaus.jackson.JsonParseException: Unexpected character ('}' (code 125)): 
was expecting double-quote to start field name 
at [Source: java.io.BufferedInputStream@7e93a1fc; line: 23, column: 18] 
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433) 
at 
org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)
 
at 
org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442)
 
at 
org.codehaus.jackson.impl.Utf8StreamParser._handleUnusualFieldName(Utf8StreamParser.java:1537)
 
at 
org.codehaus.jackson.impl.Utf8StreamParser._parseFieldName(Utf8StreamParser.java:1227)
 
at 
org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:495) 
at 
org.codehaus.jackson.map.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:219)
 
at 
org.codehaus.jackson.map.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:47)
 
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704) 
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315) 
at 
org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
 
at 
com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.readFrom(JacksonProviderProxy.java:139)
 
at 
com.sun.jersey.core.impl.provider.entity.EntityHolderReader.readFrom(EntityHolderReader.java:120)
 
at 
com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488)
 
at 
com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
 
at 
com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
 
at 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
 
at 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183)
 
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.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:1511)
 
at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)
 
at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
 
at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
 
at 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
 
at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
 
at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:910)
 
at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:858)
 
at 
com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:812)
 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 
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:380)
 
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:346)
 
at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 
at 
org.usergrid.rest.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:90) 
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
 
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
 
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
 
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
 
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
 
at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
 
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:722)"



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to