confusing returns from httpc:request/4

amitm amit.murthy@REDACTED
Wed Oct 20 08:00:54 CEST 2010


FWIW, I had a similar problem. It went away when I disabled pipelining
completely by executing

    ok = httpc:set_options([{max_keep_alive_length, 0},
{max_pipeline_length, 0}, {max_sessions, 0} ]),

before my http calls. I used to usually see it on the 4th consecutive
call to the same host when pipelining was enabled. The URL in question
in my case was an Amazon EC2 url.

The set of URLs in my case were

"http://169.254.169.254/2009-04-04/meta-data/instance-id",
"http://169.254.169.254/2009-04-04/meta-data/local-hostname",
"http://169.254.169.254/2009-04-04/meta-data/local-ipv4",
"http://169.254.169.254/2009-04-04/meta-data/public-hostname",
"http://169.254.169.254/2009-04-04/meta-data/public-ipv4",
"http://169.254.169.254/2009-04-04/meta-data/ami-id",

While executing this set, with pipelining enabled, it used to always
bomb on the 4th URL, i.e. for 'public-hostname' in 25% of the cases

with pipelining disabled, the problem disappears.

  Amit

On Oct 13, 2:58 pm, Ingela Andin <ingela.an...@REDACTED> wrote:
> 2010/10/13 Chandru <chandrashekhar.mullapar...@REDACTED>:
>
>
>
>
>
> > On 13 October 2010 09:53, Ingela Andin <ingela.an...@REDACTED> wrote:
> >> Hi!
>
> >> The only reason that the httpc-client will return the value {error,
> >> socket_closed_remotely}
> >> is that the connection is prematurely  closed by the server.
> >> Unfortunately  that something
> >> is sent on a tcp socket does not mean it has been sent on the wire
> >> yet, and depending on
> >> the circumstances it is possible for the socket to be closed before
> >> all data has been sent
> >> so occasionally a tcp_close can come before all data is delivered.
>
> >> When you use ibrowse do you verify that you always get a correct body?
> >> (compleate body) from what I can tell from the code ibrowse will on a
> >> tcp_closed  message always return whatever happens to be in the buffer
> >> compleate or not.
>
> > ibrowse does this only in the following cases:
> >  * server returned a "Connection: Close"
> >  * Server supports HTTP/0.9 or HTTP/1.0
>
> > In all other cases, it returns an error to the caller.
>
> > regards,
> > Chandru
>
> Well I do not know if any of these things is true in Dans senario. But
> I do know that
> getting the problem with a tcp close message before all data is
> deliverd is a highly timing dependant problem
> and if it happens in the server there is nothing inets-client or
> ibrows can do about it except return an error.
>
> Regards Ingela Erlang/OTP team - Ericsson AB
>
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> Seehttp://www.erlang.org/faq.html
> To unsubscribe; mailto:erlang-questions-unsubscr...@REDACTED


More information about the erlang-questions mailing list