fix issue when port is left dangling and catch poolboy timeout errors #172
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When we open connection to Faktory, we observe some events but we never take care of port in terms of closing it.
When we receive one of following signals :
:closed, :enotconn, :econnrefused
we just ignore current socket and open a new one, which leads to port leak.In this PR we are explicitly closing socket, and after observation
:erlang.ports
it shows that number of ports are not rising any more, everything stays in normal boundaries as it should be.Also, we have
handle_push_result({:error, :timeout}, job)
but we are not catching timeout properly, because poolboy checkout raises an exception. In this PR we are catching exception and returning{:error, :timeout}
which should be picked up byhandle_push_result
.