]> cat aescling's git repositories - mastodon.git/commit
Add request pool to improve delivery performance (#10353)
authorEugen Rochko <eugen@zeonfederated.com>
Mon, 1 Jul 2019 22:34:38 +0000 (00:34 +0200)
committerGitHub <noreply@github.com>
Mon, 1 Jul 2019 22:34:38 +0000 (00:34 +0200)
commit0d9ffe56fb59e0d1fce91265f44140d874c0bfba
tree84ce8cd86dc085320f979da992129de34ea13b56
parent2cfa427ea7c08abc3fa52fb2e8bfd569146e9c98
Add request pool to improve delivery performance (#10353)

* Add request pool to improve delivery performance

Fix #7909

* Ensure connection is closed when exception interrupts execution

* Remove Timeout#timeout from socket connection

* Fix infinite retrial loop on HTTP::ConnectionError

* Close sockets on failure, reduce idle time to 90 seconds

* Add MAX_REQUEST_POOL_SIZE option to limit concurrent connections to the same server

* Use a shared pool size, 512 by default, to stay below open file limit

* Add some tests

* Add more tests

* Reduce MAX_IDLE_TIME from 90 to 30 seconds, reap every 30 seconds

* Use a shared pool that returns preferred connection but re-purposes other ones when needed

* Fix wrong connection being returned on subsequent calls within the same thread

* Reduce mutex calls on flushes from 2 to 1 and add test for reaping
Gemfile
Gemfile.lock
app/lib/connection_pool/shared_connection_pool.rb [new file with mode: 0644]
app/lib/connection_pool/shared_timed_stack.rb [new file with mode: 0644]
app/lib/request.rb
app/lib/request_pool.rb [new file with mode: 0644]
app/workers/activitypub/delivery_worker.rb
spec/lib/connection_pool/shared_connection_pool_spec.rb [new file with mode: 0644]
spec/lib/connection_pool/shared_timed_stack_spec.rb [new file with mode: 0644]
spec/lib/request_pool_spec.rb [new file with mode: 0644]