Closed stat1c-void closed 1 year ago
The mentioned traceback: loki-logs-export.txt
Attention: 1 lines
in your changes are missing coverage. Please review.
Comparison is base (
ec1f095
) 69.78% compared to head (2224586
) 70.06%. Report is 7 commits behind head on master.:exclamation: Current head 2224586 differs from pull request most recent head 068e989. Consider uploading reports for the commit 068e989 to get more accurate results
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Sure, updated the PR :+1:
Hi!
Thanks for your awesome work on
pyftpdlib
!Here are two fixes, quite important in some cases, gathered from our production experience.
1. DTPHandler.use_sendfile
In one rare case in our environment pyftpdlib went into an infinite traceback printing loop.
May be a rare thing, I suspect it was mainly because of our environment: filesystem is a NAS-backed NFS, so things happen. Basically, it went something like this from my understanding:
get_repr_info() -> use_sendfile() -> fileno()
fileno()
raisesValueError
, which is not caught, and overall the event is not processedThis was happening many times per second. I'm going to attach a relevant traceback.
2. Epoll.poll
In some cases I observed infinite hanging of a connection thread. Basically, in some cases
Epoll.poll()
gets called withtimeout = 0
, but it causes it to callself._poller.poll(-1)
. At the same time there are no more events on the socket. The timeout idler should have triggered, but the thread (we use threaded server) is stuck onpoll(-1)
.I guess zero timeout comes from
_Scheduler.poll
when the top-most task is overdue:Here is a
pystack
snapshot from our production env: