[ 
https://issues.apache.org/jira/browse/USERGRID-63?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Strong Liu reassigned USERGRID-63:
----------------------------------

    Assignee: Strong Liu

> 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
>            Assignee: Strong Liu
>             Fix For: 1.1
>
>
> "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.2#6252)

Reply via email to