Skip to content

How to handle dragonfly_pipeline_queue_length that hangs forever (pipeline hangs)? #3997

Answered by romange
alessio-locatelli asked this question in Q&A
Discussion options

You must be logged in to vote

I have not explained why there is a regression. The PR that causes it is #3152

Before that Dragonfly avoided the deadlock scenario above by reading all the input data from the socket into its memory buffers. Once it did that, the python client could proceed with consuming the replies and the deadlock did not happen.
So Dragonly just read infinite number requests - it's a weakness that could potentially lead to OOM.

This PR introduced limits to that: Dragonfly stopped reading requests if it had more than K bytes in pipeline buffers per IO thread. pipeline_buffer_limit is the flag that controls that and I just confirmed that docker run --network=host docker.dragonflydb.io/dragonflydb/dragon…

Replies: 2 comments 4 replies

Comment options

You must be logged in to vote
4 replies
@alessio-locatelli
Comment options

@alessio-locatelli
Comment options

@romange
Comment options

@romange
Comment options

Answer selected by alessio-locatelli
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants