[ 
https://issues.apache.org/jira/browse/KAFKA-4017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15407224#comment-15407224
 ] 

Ewen Cheslack-Postava commented on KAFKA-4017:
----------------------------------------------

[~cotedm] Have the config that caused the problem handy? Probably not 
incredibly hard to reproduce, but would help to make sure we address the 
original problem. In particular, the error doesn't look like something I 
normally see, though I expect given the error message that you included a 
foo=bar in the JSON instead of foo: bar?

> Return more helpful responses when misconfigured connectors are submitted
> -------------------------------------------------------------------------
>
>                 Key: KAFKA-4017
>                 URL: https://issues.apache.org/jira/browse/KAFKA-4017
>             Project: Kafka
>          Issue Type: Improvement
>          Components: KafkaConnect
>    Affects Versions: 0.10.0.0
>            Reporter: Dustin Cote
>            Assignee: Ewen Cheslack-Postava
>
> Currently if a user submits a connector with a malformed configuration with 
> connect in distributed mode, the response is:
> {code}
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
> <title>Error 500 </title>
> </head>
> <body>
> <h2>HTTP ERROR: 500</h2>
> <p>Problem accessing /connectors. Reason:
> <pre>    Request failed.</pre></p>
> <hr /><i><small>Powered by Jetty://</small></i>
> </body>
> </html>
> {code}
> If the user decides to then go look at the connect server side logging, they 
> can maybe parse the stack traces to find out what happened, but are at first 
> greeted by:
> {code}
> [2016-08-03 16:14:07,797] WARN /connectors 
> (org.eclipse.jetty.server.HttpChannel:384)
> java.lang.NoSuchMethodError: 
> javax.servlet.http.HttpServletRequest.isAsyncStarted()Z
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:684)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>         at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>         at 
> org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>         at org.eclipse.jetty.server.Server.handle(Server.java:499)
>         at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
>         at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
>         at 
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> It would be better if Connect can handle this scenario more gracefully and 
> make it more clear what the problem is even directly to the client.  In the 
> example above, you can eventually locate the problem in the server logs as:
> {code}
> [2016-08-03 16:14:07,795] WARN  (org.eclipse.jetty.servlet.ServletHandler:620)
> javax.servlet.ServletException: 
> org.glassfish.jersey.server.ContainerException: 
> com.fasterxml.jackson.databind.JsonMappingException: Unexpected character 
> ('=' (code 61)): was expecting a colon to separate field name and value
>  at [Source: 
> org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@20fb9cff;
>  line: 1, column: 147] (through reference chain: 
> org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest["config"])
>         at 
> org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
>         at 
> org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
>         at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
>         at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
>         at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>         at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>         at 
> org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>         at org.eclipse.jetty.server.Server.handle(Server.java:499)
>         at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
>         at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
>         at 
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> The {quote} Unexpected character ('=' (code 61)): was expecting a colon to 
> separate field name and value {quote} should be what the client responds with 
> and a better error code than 500 which implies an internal server error.  A 
> 400 code would be more appropriate.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to