facebook / proxygen

A collection of C++ HTTP libraries including an easy to use HTTP server.
Other
8.03k stars 1.47k forks source link

Ingress Error and drain() #491

Open mikekliger opened 1 month ago

mikekliger commented 1 month ago

It is hard to follow, but do we expect an ingress error (purportedly on a transaction) to cause a session to be closed? This is with keep alive headers. We are utilizing proxygen::SessionPool

I am having connection churn issues under heavy load and can see a trail of logs before the session is drained (v =4)

IsReusable prints this, right before SessionHolder calls drain() on the session. I also see an ingress Timeout on this thread around the same time.

HTTPUpstreamSession.cpp:28] isReusable: proto=http/1.1, local=1redacted redacted=upstream, liveTransactions=0, isClosing()=0, sock->connecting()=0, codec->isReusable()=1, codec->isBusy()=1, numActiveWrites=0, writeTimeout.isScheduled()=0, ingressError=1, hasMoreWrites()=0, codec->supportsParallelRequests()=0 |  

mikekliger commented 1 month ago

Is there any way to allow the connection to stay open under these circumstances?

mikekliger commented 1 month ago

Furthermore, is there a transactionTimeout callback we can utilize to gather info on the associated HTTP::upstreamSession