This repository was archived by the owner on Oct 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 837
This repository was archived by the owner on Oct 23, 2024. It is now read-only.
Proxying with "Expect: 100-continue" does not work correctly #1763
Copy link
Copy link
Closed
Milestone
Description
Workarounds
- Don't use "Expect: 100-continue" (obviously)
- Do use Java 8 to run Marathon
- Always connect to the Marathon-Leader directly
Original Text
I deploy a redis cluster. srv005 is marathon leader. Then:
$ curl -v -f -H "Content-Type: application/json" -X POST http://srv004:5080/v2/groups -d@redis.json
* Hostname was NOT found in DNS cache
* Trying 10.0.0.4...
* Connected to srv004 (10.0.0.4) port 5080 (#0)
> POST /v2/groups HTTP/1.1
> User-Agent: curl/7.37.1
> Host: srv004:5080
> Accept: */*
> Content-Type: application/json
> Content-Length: 2009
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 0
* Server Jetty(8.y.z-SNAPSHOT) is not blacklisted
< Server: Jetty(8.y.z-SNAPSHOT)
<
* Connection #0 to host srv004 left intact
But, talking to srv005 directly gives http 400:
$ curl -v -f -H "Content-Type: application/json" -X POST http://srv005:5080/v2/groups -d@redis.json
* Hostname was NOT found in DNS cache
* Trying 10.0.0.5...
* Connected to srv005 (10.0.0.5) port 5080 (#0)
> POST /v2/groups HTTP/1.1
> User-Agent: curl/7.37.1
> Host: srv005:5080
> Accept: */*
> Content-Type: application/json
> Content-Length: 2009
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* The requested URL returned error: 400 Bad Request
* Closing connection 0
curl: (22) The requested URL returned error: 400 Bad Request
In the logs of srv004:
Jul 8 09:52:00 srv004 marathon[6896]: [2015-07-08 09:52:00,372] INFO Proxying request to GET http://srv005:5080/v2/apps from srv004:5080 (mesosphere.marathon.api.JavaUrlConnectionRequestForwarder$:2
80)
Jul 8 09:52:14 srv004 marathon[6896]: [2015-07-08 09:52:14,708] WARN /v2/groups (org.eclipse.jetty.servlet.ServletHandler:563)
Jul 8 09:52:14 srv004 marathon[6896]: java.lang.RuntimeException: while proxying
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.LeaderProxyFilter.doFilter(LeaderProxyFilter.scala:141)
Jul 8 09:52:14 srv004 marathon[6896]: #011at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
Jul 8 09:52:14 srv004 marathon[6896]: #011at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
Jul 8 09:52:14 srv004 marathon[6896]: #011at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
Jul 8 09:52:14 srv004 marathon[6896]: #011at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
Jul 8 09:52:14 srv004 marathon[6896]: #011at com.codahale.metrics.jetty8.InstrumentedHandler.handle(InstrumentedHandler.java:192)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.Server.handle(Server.java:370)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:651)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
Jul 8 09:52:14 srv004 marathon[6896]: #011at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.lang.Thread.run(Thread.java:745)
Jul 8 09:52:14 srv004 marathon[6896]: Caused by: java.net.SocketTimeoutException: Read timed out
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.net.SocketInputStream.socketRead0(Native Method)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.net.SocketInputStream.read(SocketInputStream.java:152)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.net.SocketInputStream.read(SocketInputStream.java:122)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
Jul 8 09:52:14 srv004 marathon[6896]: #011at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
Jul 8 09:52:14 srv004 marathon[6896]: #011at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
Jul 8 09:52:14 srv004 marathon[6896]: #011at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
Jul 8 09:52:14 srv004 marathon[6896]: #011at sun.net.www.protocol.http.HttpURLConnection.expect100Continue(HttpURLConnection.java:1021)
Jul 8 09:52:14 srv004 marathon[6896]: #011at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1106)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.JavaUrlConnectionRequestForwarder$$anonfun$copyRequestBodyToConnection$1$1.apply(LeaderProxyFilter.scala:238)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.JavaUrlConnectionRequestForwarder$$anonfun$copyRequestBodyToConnection$1$1.apply(LeaderProxyFilter.scala:237)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.io.IO$.using(IO.scala:87)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.JavaUrlConnectionRequestForwarder.copyRequestBodyToConnection$1(LeaderProxyFilter.scala:237)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.JavaUrlConnectionRequestForwarder.copyRequestToConnection$1(LeaderProxyFilter.scala:248)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.JavaUrlConnectionRequestForwarder.forward(LeaderProxyFilter.scala:290)
Jul 8 09:52:14 srv004 marathon[6896]: #011at mesosphere.marathon.api.LeaderProxyFilter.doFilter(LeaderProxyFilter.scala:137)
Jul 8 09:52:14 srv004 marathon[6896]: #011... 26 more
Jul 8 09:52:14 srv004 marathon[6896]: [2015-07-08 09:52:14,714] INFO 10.0.0.254 - - [08/Jul/2015:09:52:04 +0000] "POST /v2/groups HTTP/1.1" 200 0 "-" "curl/7.37.1" (mesosphere.chaos.http.ChaosRequ
estLog:15)
Metadata
Metadata
Assignees
Labels
No labels