Timeout happens because of how we handle the request. Timeout is basically
no response came back. Why that happens is because we think we want to have
a correct response. Unfortunately for long running requests the correct
response shouldn't be via http response code or we face situations like
this. Instead reply with a 200 OK immediately and then provide correct
status in the message body. Once a response code/header has been sent
timeout won't trigger and you could potentially hold the connection for
hours without a problem.

On Wed, Apr 23, 2025, 9:32 AM Andreas Mock <andreas.m...@web.de> wrote:

> Hi Joseph,
>
> your description is very vague, so can only answer on some assumptions:
>
> It sounds like a timeout is fired somewhere.
>
> Best advice in these situations: Log as many steps as you can. Keep your
> eyes open on TCP/IP and higher level timeouts.
>
> Declare only ONE instance responsible for a retry: Either the app server
> calling the dispatcher with several tries or the dispatcher trying for
> himself. Not both.
>
> Best regards
> Andreas
>
>
> Am 23.04.2025 um 16:21 schrieb Joseph He:
> > All, good day.
> >
> > Here is the issue I have.
> > My entire application is running on ModPerl/Apache environment.
> > I send Http::Request with data load from my App server to a dispatch
> > server thru LWP::UserAgent, I set the timeout 600 seconds.
> >
> > The dispatch server is supposed to manipulate the data and send the
> > data to an external SFTP server. Because the SFTP can fail, it will
> > keep trying up to 4 times with 30 seconds sleep in case that SFTP
> > connection fails.
> >
> > Recently, I found that I uploaded the file twice sometimes. I figured
> > out the root cause is that my Dispatch server returns 'failure' at 6
> > minutes while it keeps trying to do the SFTP. The App server
> > received HTTP::Response with error status so it issued another call to
> > send data. It turns out I uploaded the identified file twice.
> >
> > Anybody has this sort of experience? Why does the dispatch server
> > return 'error' while it still processes the data?
> >
> > Thanks a lot,
> > Joseph
> >
>

Reply via email to