No description
f859bd907a
This commit moves each close call made on a `CloseableHttpAsyncClient` from the thread on which the request callback is made over to a different thread in order to avoid a deadlock. Previously, the client close call was made in the context of thread from which the callback was invoked. The Apache HTTP async client library makes these calls from one of its i/o reactor threads. In the case of a "failed" request, e.g., failure to make the client connection, this call occurs in the context of the primary i/o reactor thread. The client close call does an indefinite join on the primary i/o reactor thread and, therefore, this call causes a deadlock. The client never closes and all resources associated with it - threads, file descriptors, etc. - remain open until the process is shutdown. This commit introduces a new class, `AsyncClose`, which manages a small, fixed size thread pool from which client close calls can be executed. The `async` Clojure and `JavaClient` APIs were updated to use `AsyncClose` whenever a client needs to be closed from a callback. |
||
---|---|---|
dev-resources/ssl | ||
ext/travisci | ||
jenkins | ||
src | ||
test | ||
.gitignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
project.clj | ||
README.md |
puppetlabs/http-client
This is a wrapper around the Apache HttpAsyncClient library providing some extra functionality for configuring SSL in a way compatible with Puppet.
Async versions of the http methods are exposed in puppetlabs.http.client.async, and synchronous versions are in puppetlabs.http.client.sync.