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 > > >