[
https://issues.apache.org/jira/browse/USERGRID-63?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeffrey resolved USERGRID-63.
------------------------------
Resolution: Fixed
> 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
>
> "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.3.4#6332)