1 Reply Latest reply on Feb 1, 2015 8:57 PM by Benj Bouch

    AsyncHttp and retries

    Jon Tara

      Does AsyncHttp retry any operation, or is that the caller's responsibility?

       

      That is, when we get a timeout on an AsyncHttp call, has AsyncHttp retried the operation?

       

      I am getting error 1, cannot establish network connection, occasionally, on one particular Android device. I suspect the device, but, of course, our application should be tolerant of flaky connectivity.

       

      We are doing a Rho::AsyncHttp.upload_file. I set the :ssl_verify_peer option to false, to rule-out the possibility of the device missing a CA certificate.

       

      The log shows the POST request, then 60 seconds later Operation finished with error 28, then a CURLNetRequest message showing what was requested, then RhodesService PING network FAILED.

       

      It appears that Rhodes attempts to fetch HEAD after the error, and displays the PING network SUCCEEDED or FAILED, but does nothing else. So, the operation times-out, and then there is some attempt to connect again only for the purpose of error reporting. (I'm not so sure this is a good idea...)

       

      I've been looking through code, and don't see anywhere where there are any retries going on.

        • Re: AsyncHttp and retries
          Benj Bouch

          Did you get any further info on that point? I am facing the same problem.

           

          I did a test by setting `net_timeout = 3` in rhoconfig.txt and performed a `Rho::Network.get` to an url where the server was down.

          Then I look at the logs to see that there are about 10 retries before the callback is called.

           

          Any option to control the number of retries, or to disable retrying at all?