facebook / proxygen

A collection of C++ HTTP libraries including an easy to use HTTP server.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ingress Error and drain()

mikekliger opened this issue · comments

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 |  

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

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