[ https://issues.apache.org/jira/browse/USERGRID-63?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14095959#comment-14095959 ]
Strong Liu commented on USERGRID-63: ------------------------------------ PR created https://github.com/apache/incubator-usergrid/pull/47 > 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)