Commit graph

22 commits

Author SHA1 Message Date
rinpatch
d4fbec62a3 ReverseProxy: Fix a gun connection leak when there is an error with no
body

- Modify `close/1` function to do the same thing it does for hackney,
which is - close the client rather than the whole connection
- Release the connection when there is no body to chunk
2020-07-26 19:30:17 +03:00
rinpatch
58a4f350a8 Refactor gun pooling and simplify adapter option insertion
This patch refactors gun pooling to use Elixir process registry and
simplifies adapter option insertion.

Having the pool use process registry instead of a GenServer has a number of advantages:
- Simpler code: the initial implementation adds about half the lines of code it deletes
- Concurrency: unlike a GenServer, ETS-based registry can handle multiple checkout/checkin
requests at the same time
- Precise and easy idle connection clousure: current proposal for closing idle connections in
the GenServer-based pool needs to filter through all connections once a minute and compare their
last active time with closing time. With Elixir process registry this can be done
by just using `Process.send_after`/`Process.cancel_timer` in the worker process.
- Lower memory footprint: In my tests `gun-memory-leak` branch uses about 290mb on peak load (250 connections)
and 235mb on idle (5-10 connections). Registry-based pool uses 210mb on idle and 240mb on peak load
2020-07-15 15:17:27 +03:00
Mark Felder
72b3dbf4d1 Credo line length complaint 2020-07-10 11:04:19 -05:00
href
a1dace088c ReverseProxy: Streaming and disable encoding if Range
Fixes #1823
Fixes #1860
2020-07-10 17:23:11 +02:00
Alexander Strizhakov
f0651730bd
Merge branch 'develop' into gun 2020-03-16 14:25:55 +03:00
Mark Felder
7321429a2e Lint 2020-03-13 12:42:06 -05:00
Mark Felder
c62195127d Update comment to reflect what the code is actually doing 2020-03-13 11:46:40 -05:00
Mark Felder
ad31d0726a Do not trust remote Cache-Control headers for mediaproxy 2020-03-13 11:30:27 -05:00
Alexander Strizhakov
98ed0d1c4b
more clean up 2020-03-13 09:37:57 +03:00
Mark Felder
d9c5ae7c09 Update Copyrights for gun related files 2020-03-03 17:16:24 -06:00
Mark Felder
4427161ca3 Merge branch 'develop' into gun 2020-03-03 17:15:49 -06:00
Mark Felder
05da5f5cca Update Copyrights 2020-03-03 16:44:49 -06:00
Alexander Strizhakov
d0e4d3ca3b
removing unnecessary with
comment in tesla client impovement
2020-03-03 14:56:49 +03:00
Alexander Strizhakov
151dc4e387 Apply suggestion to lib/pleroma/reverse_proxy/client/tesla.ex 2020-03-03 09:53:37 +00:00
Alexander Strizhakov
514c899275
adding gun adapter 2020-02-18 08:19:01 +03:00
rinpatch
9bdbf0811b Make MediaProxy failure tracking less brutal
The current failure tracking mechanism will never request anything that
didn't respond with a success, 403, 404, or 5xx codes. This is causing
issues when using in real fediverse because of weird status codes
some software has and timeouts being frequent. This patch changes
failure tracking mechanism to only never request the url again if it
responded with 400, 204, or the body is too large, otherwise it can be
re-requested in 60 seconds.
2019-10-11 22:52:38 +03:00
Sergey Suprunenko
c541b83bef Track failed proxy urls and don't request them again 2019-10-01 20:00:27 +00:00
Mark Felder
ef82f868d9 Formatting 2019-08-16 10:00:18 -05:00
Mark Felder
6a3b1a526e max_body_size -> max_body_length, as it should be 2019-08-15 15:34:41 -05:00
rinpatch
b001b8891a Merge the default options with custom ones in ReverseProxy and
Pleroma.HTTP
2019-07-12 23:52:26 +03:00
93a0eeab16 Add license/copyright to all project files 2019-07-10 05:13:23 +00:00
Alexander Strizhakov
4e6e5d8042 reverse proxy tests 2019-07-09 16:54:13 +00:00