aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2020-07-15Ensure connections error get known by the callerhref
2020-07-15ConnectionPool.Worker: Open gun conn in continue instead of inithref
2020-07-15Connection Pool: fix LRFU implementation to not actually be LRUrinpatch
The numbers of the native time unit were so small the CRF was always 1, making it an LRU. This commit switches the time to miliseconds and changes the time delta multiplier to the one yielding mostly highest hit rates according to the paper
2020-07-15Request limiter setup: consider {:error, :existing} a successrinpatch
When the application restarts (which happens after certain config changes), the limiters are not destroyed, so `ConcurrentLimiter.new` will produce {:error, :existing}
2020-07-15FollowRedirects: Unconditionally release the connection if there is an errorrinpatch
There is no need for streaming the body if there is no body
2020-07-15Gun adapter helper: fix wildcard cert issues on OTP 23rinpatch
See https://bugs.erlang.org/browse/ERL-1260 for more info. The ssl match function is basically copied from mint, except that `:string.lowercase/1` was replaced by `:string.casefold`. It was a TODO in mint's code, so might as well do it since we don't need to support OTP <20. Closes #1834
2020-07-15Add documentation for new connection pool settings and remove somerinpatch
`:retry_timeout` and `:retry` got removed because reconnecting on failure is something the new pool intentionally doesn't do. `:max_overflow` had to go in favor of `:max_waiting`, I didn't reuse the key because the settings are very different in their behaviour. `:checkin_timeout` got removed in favor of `:connection_acquisition_wait`, I didn't reuse the key because the settings are somewhat different. I didn't do any migrations/deprecation warnings/changelog entries because these settings were never in stable.
2020-07-15Use erlang monotonic time for CRF calculationrinpatch
2020-07-15Adapter Helper: Use built-in ip address typerinpatch
2020-07-15HTTP: Implement max request limitsrinpatch
2020-07-15Use a custom pool-aware FollowRedirects middlewarerinpatch
2020-07-15Connection pool: fix connections being supervised by gun_suprinpatch
2020-07-15Connection pool: Add client death trackingrinpatch
While running this in production I noticed a number of ghost processes with all their clients dead before they released the connection, so let's track them to log it and remove them from clients
2020-07-15Connection pool: Fix a possible infinite recursion if the pool is exhaustedrinpatch
2020-07-15Connection pool: implement logging and telemetry eventsrinpatch
2020-07-15Connection Pool: register workers using :viarinpatch
2020-07-15Connection pool: Fix race conditions in limit enforcementrinpatch
Fixes race conditions in limit enforcement by putting worker processes in a DynamicSupervisor
2020-07-15Connection pool: check that there actually is a resultrinpatch
Sometimes connections died before being released to the pool, resulting in MatchErrors
2020-07-15Connection Pool: don't enforce pool limits if no new connection needs to be ↵rinpatch
opened
2020-07-15Refactor gun pooling and simplify adapter option insertionrinpatch
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-14Email admins when a new unapproved account is up for reviewAlex Gleason
2020-07-14Merge remote-tracking branch 'upstream/develop' into by-approvalAlex Gleason
2020-07-14Add :approval_pending to User @type account_statusAlex Gleason
2020-07-14AdminAPI: Add `PATCH /api/pleroma/admin/users/approve` endpointAlex Gleason
2020-07-14AdminAPI: Filter users by `need_approval`Alex Gleason
2020-07-14AdminAPI: Return `approval_pending` with usersAlex Gleason
2020-07-14Include port in host for signaturesMaksim Pechnikov
2020-07-14Lint and fix test to match new log messageMark Felder
2020-07-14Improve error messagesMark Felder
2020-07-14AdminAPI: Return `registration_reason` with usersAlex Gleason
2020-07-14Merge branch 'feature/1922-media-proxy-whitelist' into 'develop'feld
Support for hosts with scheme in MediaProxy whitelist setting Closes #1922 See merge request pleroma/pleroma!2754
2020-07-14Merge branch 'fix/scrubber-recompile-warnings-as-errors' into 'develop'feld
Fix in-db configuration in dev environment See merge request pleroma/pleroma!2764
2020-07-14Merge branch '1940-admin-token-oauthless-auth' into 'develop'feld
[#1940] Reinstated OAuth-less `admin_token` authentication Closes #1940 See merge request pleroma/pleroma!2760
2020-07-14[#1940] Added `admin_token` param (as `admin_api_params/0`) to existing ↵Ivan Tashkinov
Admin API OpenAPI operations.
2020-07-14Merge branch '1916-transmogrifier-skipping-oddities-in-address-fields' into ↵feld
'develop' Transmogrifier: filtering weirdness in address fields Closes #1916 See merge request pleroma/pleroma!2762
2020-07-14Fix in-db configuration in dev environmentrinpatch
Previously, in-db configuration only worked when `warnings_as_errors` was disabled because re-compiling scrubbers on application restart created a warning about module conflicts. This patch fixes that by enabling `ignore_module_conflict` option of the compiler at runtime, and enables `warnings_as_errors` in prod since there is no reason to keep it disabled anymore.
2020-07-14MRF Policies: Return a {:reject, reason} instead of {:reject, nil}Haelwenn (lanodan) Monnier
2020-07-14[#1940] Applied rate limit for requests with bad `admin_token`. Added doc ↵Ivan Tashkinov
warnings on `admin_token` setting.
2020-07-19[#1940] Reinstated OAuth-less `admin_token` authentication. Refactored ↵Ivan Tashkinov
UserIsAdminPlug (freed from checking admin scopes presence).
2020-07-14added generated `pleroma.env`Maksim Pechnikov
2020-07-14Accept `reason` in POST /api/v1/accounts and store in DBAlex Gleason
2020-07-13Transmogrifier: filtering weirdness in address fields=
2020-07-13Merge branch 'develop' into refactor/notification_settingsMark Felder
2020-07-13Merge branch 'config-behaviours-runtime' into 'develop'feld
Config/Docs: Expand behaviour suggestions modules at runtime Closes #1941 See merge request pleroma/pleroma!2755
2020-07-13Merge branch 'features/profile-fields-emojo' into 'develop'feld
user: Add support for custom emojis in profile fields See merge request pleroma/pleroma!2741
2020-07-13Merge branch 'chore/improve-database-config-docs' into 'develop'feld
Improve database config migration and add documentation See merge request pleroma/pleroma!2756
2020-07-13LintMark Felder
2020-07-13Pick up env for both source and OTP installsMark Felder
2020-07-13Use Logger.info for {:reject, reason}Haelwenn (lanodan) Monnier
2020-07-13Transmogrifier.fix_in_reply_to/2: Use warn for non-fatal fail to get ↵Haelwenn (lanodan) Monnier
replied-to post