Fix zerocopy AsyncSocket memory leaks
Summary: We currently leak ptr entries due to a missing map erase call in AsyncSocket::releaseZeroCopyBuf. Also addZeroCopyBuf called when the bytesWritten == 0 will cause and extra id to be allocated. This will delay the deletion of the last IOBuf sent via zerocopy. The number of buffers can accumulate over time if the same bytesWritten == 0 situation is encountered. Found when running the nbd-server zero downtime upgrade during heavy fio traffic. Add an AsyncSocket::processZeroCopyWriteInProgress so we can drain the zerocopy msg error queue even after we set the ReadCallback to nullptr. Reviewed By: djwatson Differential Revision: D6552982 fbshipit-source-id: 3d2fdca84ec3b5fc46c3bed06c0c9ede66ed565a
Showing
Please register or sign in to comment