goauthentik / goauthentik/authentik
outpost_service_connection_monitor leaking threads and ssh sessions
- Dominant language
- Python
- Stars
- 25.6k
- Forks
- 2k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 644
Description
**Describe the bug**
Whenever the task `Update cached state of service connection.` (`authentik.outposts.tasks.outpost_service_connection_monitor`) runs, it seems to both leak threads (one of my worker processes is currently at over 2.6k threads and, when any instance of this task is running, is taking nearly 600% cpu of mostly kernel time) and ssh sessions on the outposts.
State of the worker:
```
$ pgrep -f authentik-worker | xargs -I{} grep Threads /proc/{}/status
Threads: 2
Threads: 2638
Threads: 1
Threads: 1
```
State of one of two of my outpost servers:
```
$ systemctl list-units --state=active | grep -E "Session [0-9]+ of User authentik" | wc -l
1313
```
**To Reproduce**
Steps to reproduce the behavior:
Set up an outpost integration using a ssh:// URL. Wait for the outpost_service_connection_monitor task to run a couple times.
**Expected behavior**
The sessions and threads should end.
**Logs**
The worker showed this one anomaly (though there are only /health request logs for a few days before, while the leak has been happening this whole time):
```
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:15:26.147404"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:15:57.319210"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:16:29.704921"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:17:00.685348"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:17:31.591562"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:18:03.231936"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:18:34.098349"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:19:04.917984"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:19:36.052080"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:20:07.177102"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:20:38.617129"}
authentik-worker-1 | {"event": "Time limit exceeded. Raising exception in worker thread 139239449355968.", "level": "warning", "logger": "dramatiq.middleware.time_limit.TimeLimit", "timestamp": "2025-09-12T10:21:04.232493"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:21:09.628859"}
authentik-worker-1 | {"event": "Failed to process message authentik.outposts.tasks.outpost_service_connection_monitor(UUID('aed7d7c7-c993-48e7-a097-416c2a476b2d')) with unhandled exception.", "exception": [{"exc_notes": [], "exc_type": "TimeLimitExceeded", "exc_value": "", "exceptions": [], "frames": [{"filename": "/ak-root/.venv/lib/python3.13/site-packages/dramatiq/worker.py",
"lineno": 498, "locals": {"actor": "'Actor(, queue_nam'+86", "e": "TimeLimitExceeded()", "message": "", "res": "None", "self": "<_WorkerThread(Thread-5, started daemon 139239449355968)>", "throws": "None"}, "name": "process_message"}, {"filename": "/ak-root/.venv
/lib/python3.13/site-packages/dramatiq/broker.py", "lineno": 115, "locals": {"args": "(,)", "kwargs": "{'result': None}", "middleware": "", "self": "", "signal": "'after_process_message'"}, "name": "emit_after
"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/dramatiq/results/middleware.py", "lineno": 95, "locals": {"broker": "", "exception": "None", "message": "", "result": "None", "result_ttl": "600000", "self": "", "store_results": "True"}, "name": "after_process_message"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/dramatiq/results/backend.py", "lineno": 123, "locals": {"message": "", "message_key": "'4876d944-14fb-4cad-b453-3ff82216ae7d'", "result": "None", "self": "", "ttl": "600000"}, "name": "store_result"}, {"filename": "/ak-root/packages/django-dramatiq-postgres/django_dramatiq_postgres/results.py", "lineno": 39, "locals": {"message_key": "'4876d944-14fb-4cad-b453-3ff82216ae7d'", "result": "None", "self": "", "ttl": "600000"},
"name": "_store"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/django/db/models/query.py", "lineno": 1253, "locals": {"kwargs": "\"{'mtime': datetime.datetime(2025, 9, 12, 10, 20, 48, 429305, tzinfo=datetime.tim\"+135", "new_order_by": "[]", "query": "", "self": "]>"}, "name": "update"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", "lineno": 2003, "locals": {"result_type": "'cursor'", "self": "\",)", "func": "", "kwargs": "{}", "message": "'You cannot call this from an async
context - use a thread or sync_to_async.'"}, "name": "inner"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/django/db/backends/base/base.py", "lineno": 319, "locals": {"self": ""}, "name": "cursor"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/django_tenants/postgresql_backend/base.py", "lineno": 171
, "locals": {"cursor": "", "cursor_for_search_path": "'.CursorWrapper [no r'+69", "formatted_search_paths": "[\"'public'\"]", "name": "None", "search_paths": "['public']", "self": ""}, "name": "_cursor"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/django_prometheus/db/common.py", "lineno": 69, "locals": {"alias": "'default'", "args": "(\"SET search_path = 'public'\",)", "kwargs": "{}", "labels": "{'alias': 'default', 'vendor': 'postgresql'}", "self": "'.CursorWrapper [no r'+69", "vendor": "'postgresql'"},
"name": "execute"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/psycopg/cursor.py", "lineno": 93, "locals": {"binary": "None", "params": "None", "prepare": "None", "query": "\"SET search_path = 'public'\"", "self": "'.CursorWrapper [no r'+69"}, "name": "execute"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/psycopg/connection.py", "lineno": 414, "locals": {"gen": "", "interval": "0.1", "self": "'", "prepare": "None", "query": "\"SET search_path = 'public'\"", "self": "'.CursorWrapper [no r'+69"},
"name": "_execute_gen"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/psycopg/_cursor_base.py", "lineno": 305, "locals": {"binary": "None", "key": "None", "name": "b''", "pgq": "", "prep": "", "prepare": "None", "results": "[]", "self": "'.CursorWrapper [no r'+69"}, "name": "_maybe_prepare_gen"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/psycopg/_cursor_base.py", "lineno": 456, "locals": {"results": "[]", "self": "'.CursorWrapper [no r'+69"}, "name": "_check_results"}], "is_cause": false, "is_group": false, "syntax_error": null}], "level": "error", "logger": "dramatiq.worker.WorkerThread", "timestamp": "2025-09-12T10:21:04.668564"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:21:40.655239"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:22:11.335799"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:22:41.999764"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:23:13.173543"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:23:44.451581"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:24:15.351027"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:24:46.126914"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:25:17.310019"}
authentik-worker-1 | {"event": "Retrying message '4876d944-14fb-4cad-b453-3ff82216ae7d' in 14850 milliseconds.", "level": "info", "logger": "dramatiq.middleware.retries.Retries", "timestamp": "2025-09-12T10:25:25.621472"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:25:48.444457"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:26:19.862329"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:26:50.739187"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:27:21.858454"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:27:53.111227"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:28:24.235262"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:28:54.950177"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:29:25.864420"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:29:58.094615"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:30:29.801208"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:31:01.752877"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:31:32.631850"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:32:03.503115"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:32:35.015953"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:33:05.797315"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:33:36.972717"}
authentik-worker-1 | {"event": "Time limit exceeded. Raising exception in worker thread 139239440963264.", "level": "warning", "logger": "dramatiq.middleware.time_limit.TimeLimit", "timestamp": "2025-09-12T10:33:39.673787"}
authentik-worker-1 | {"event": "Failed to process message authentik.outposts.tasks.outpost_service_connection_monitor(UUID('b47c0e72-4716-4e4c-9944-9eb9174bfdc8')) with unhandled exception.", "exception": [{"exc_notes": [], "exc_type": "TimeLimitExceeded", "exc_value": "", "exceptions": [], "frames": [{"filename": "/ak-root/.venv/lib/python3.13/site-packages/dramatiq/worker.py", "lineno": 487, "locals": {"actor": "'Actor(, queue_nam'+86", "e": "TimeLimitExceeded()", "message": "", "res": "None", "self": "<_WorkerThread(Thread-6, started daemon 139239440963264)>", "throws": "None"}, "name": "process_message"}, {"filename": "/ak-root/.venv
/lib/python3.13/site-packages/dramatiq/actor.py", "lineno": 185, "locals": {"args": "(UUID('b47c0e72-4716-4e4c-9944-9eb9174bfdc8'),)", "delta": "604.1983839629684", "kwargs": "{}", "self": "'Actor(, queue_nam'+86", "start": "1418419.631270247"}, "name": "__call__"}, {"filename": "/authentik/outposts/tasks.py", "lineno": 100, "locals": {"cls": "", "connection": "", "connection_pk": "UUID('b47c0e72-4716-4e4c-9944-9eb9174bfdc8')"}, "name": "outpost_service_connection_monitor"}, {"filename": "/authentik/outposts/controllers/docker.py", "lineno": 70, "locals": {"connection": "", "parsed_url": "\"ParseResult(scheme='ssh', netloc='REDACTED_hostname:REDACTED_sshport', path='', params=''\"+24", "self": "", "tls_config": "False"}, "name": "__init__"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/models/containers.py", "lineno": 1018, "locals": {"all": "False", "before": "None", "containers": "'[, , '+163", "filters": "None", "ignore_removed": "False", "limit": "-1", "r": "\"{'Id': 'b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab397c', 'Name\"+2165", "resp": "\"[{'I
d': 'c200b5e282242c666c8db2923be082d85fa4edea3bcda0f67a28c86eb30a1dfb', 'Nam\"+26478", "self": "", "since": "None", "sparse": "False"}, "name": "list"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/models/containers.py", "lineno": 954, "locals": {"container_id": "'b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab397c'", "self": ""}, "name": "get"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/utils/decorators.py", "lineno": 19, "locals": {"args": "()", "f": "", "kwargs": "{}", "resource_id": "'b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab397c'", "resource_name": "'container'", "self": ""}, "name": "wrapped"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/api/container.py", "lineno": 794, "locals": {"container": "'b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab397c'", "self": "<
docker.api.client.APIClient object at 0x7ea204361950>"}, "name": "inspect_container"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/utils/decorators.py", "lineno": 44, "locals": {"args": "\"('http+docker://ssh/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5\"+29", "f": "", "kwargs": "{}", "self": ""}, "name": "inner"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/api/client.py", "lineno": 246, "locals": {"kwargs": "{'timeout': 60}", "self": "", "url": "'http+docker://ssh/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c576'+24"}, "name": "_get"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/requests/sessions.py", "lineno": 602, "locals": {"kwargs": "{'timeout': 60, 'allow_redirects': True}", "self": "", "url": "'http+docker://ssh/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c576'+24"}, "name": "get"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/requests/sessions.py", "lineno": 589, "locals": {"allow_redirects": "True", "auth": "None", "cert": "None", "cookies": "None", "data": "None", "files": "None", "headers": "None", "hooks": "None", "json": "None", "method": "'GET'", "params": "None", "prep": "", "proxies": "{}", "req": "", "self": "", "send_kwargs": "\"{'timeout': 60, 'allow_redirects': True, 'proxies': OrderedDict(), 'stream': Fal\"+33", "settings": "{'proxies': OrderedDict(), 'stream': False, 'verify': True, 'cert': None}", "stream": "None", "timeout": "60", "url": "'http+docker://ssh/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c576'+24", "verify": "None"}, "name": "request"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/requests/sessions.py", "lineno": 703, "locals": {"adapter": "", "allow_redirects": "True", "hooks": "{'response': []}", "kwargs": "\"{'timeout': 60, 'proxies': OrderedDict(), 'stream': False, 'verify': True, 'cert\"+8", "request": "", "self": "", "start": "1757673190.790919", "stream": "False"}, "name": "send"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/requests/adapters.py", "lineno": 667, "locals": {"cert": "None", "chunked": "False", "conn": "", "proxies": "OrderedDict()", "request": "", "self": "", "stream": "False", "timeout": "Timeout(connect=60, read=60, total=None)", "url": "'/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab39'+7", "verify": "True"}, "name": "send"}, {"filename": "/ak-root/.venv/lib/python3.13/s
ite-packages/urllib3/connectionpool.py", "lineno": 787, "locals": {"assert_same_host": "False", "body": "None", "body_pos": "None", "chunked": "False", "clean_exit": "False", "conn": "None", "decode_content": "False", "destination_scheme": "None", "err": "None", "headers": "\"{'User-Agent': 'docker-sdk-python/7.1.0', 'Accept-Encoding': 'gzip, deflate', 'A\"+42", "http_tunnel_requ
ired": "False", "method": "'GET'", "parsed_url": "\"Url(scheme=None, auth=None, host=None, port=None, path='/v1.51/containers/b8320f\"+92", "pool_timeout": "None", "preload_content": "False", "redirect": "False", "release_conn": "False", "release_this_conn": "True", "response_conn": "", "response_kw": "{}", "retries
": "Retry(total=0, connect=None, read=False, redirect=None, status=None)", "self": "", "timeout": "Timeout(connect=60, read=60, total=None)", "timeout_obj": "Timeout(connect=60, read=60, total=None)", "url": "'/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab39'+7"}, "name": "urlopen"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/urllib3/connectionpool.py", "lineno": 493, "locals": {"body": "None", "chunked": "False", "conn": "", "decode_content": "False", "enforce_content_length": "True", "headers": "\"{'User-Agent': 'docker-sdk-python/7.1.0', 'Accept-Encoding': 'gzip, deflate', 'A\"+42", "method": "'GET'", "preload_content": "False", "response_conn": "", "retries": "Retry(total=0, connect=None, read=False, redirect=None, status=None)", "self": "", "timeout": "Timeout(connect=60, read=60, total=None)", "timeout_obj": "Timeout(connect=60, read=60, total=None)", "url": "'/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab39'+7"}, "name": "_make_request"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/urllib3/connection.py", "lineno": 494, "locals": {"body": "None", "chunked": "False", "chunks": "None", "chunks_and_cl": "ChunksAndContentLength(chunks=None, content_length=None)", "content_length": "None", "decode_content": "False", "enforce_content_length": "True", "header": "'Connection'", "header_keys": "frozenset({'user-agent', 'accept-encoding', 'connection', 'accept'})", "headers": "\"{'User-Agent': 'docker-sdk-python/7.1.0', 'Accept-Encoding': 'gzip, deflate', 'A\"+42", "method": "'GET'", "preload_content": "False", "self": "", "skip_accept_encoding": "True", "skip_host": "False", "url": "'/v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81ab39'+7", "value": "'keep-alive'"}, "name": "request"}, {"filename": "/usr/local/lib/python3.13/http/client.py", "lineno": 1333, "locals": {"encode_chunked": "False", "message_body": "None", "self": ""}, "name": "endheaders"}, {"filename": "/usr/local/lib/python3.13/http/client.py", "lineno": 1093, "locals": {"encode_chunked": "False", "message_body": "None", "msg": "b'GET /v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81'+147", "self": ""}, "name": "_send_output"}, {"filename": "/usr/local/lib/python3.13/http/client.py", "lineno": 1037, "locals": {"data": "b'GET /v1.51/containers/b8320fb8ed0379c6bbebdb99afdeaf77d99408bb2c5766e2998b154a81'+147", "self": ""}, "name": "send"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/docker/transport/sshconn.py", "lineno": 109, "locals": {"self": ""}, "name": "connect"}, {"filename": "/ak-root/.venv/lib/python3.13/site-packages/paramiko/transport.py", "lineno": 994, "locals": {"max_packet_size": "None", "self": "' ", "kind": "'session'", "m": "\"paramiko.Message(b'Z\\\\x00\\\\x00\\\\x00\\\\x07session\\\\x00\\\\x00\\\\x00\\\\x0b\\\\x00 \\\\x00\\\\x00\\\\x00\\\\x00\"+10", "max_packet_size": "32768", "self": "'", "signaled": "False", "timeout": "0.1"}, "name": "wait"}, {"filename": "/usr/local/lib/python3.13/threading.py", "lineno": 363, "locals": {"gotit": "False", "saved_state": "None", "self": ", 0)>", "timeout": "0.1", "waiter": ""}, "name": "wait"}], "is_cause": false, "is_group": false, "syntax_error": null}], "level": "error", "logger": "dramatiq.worker.WorkerThread", "timestamp": "2025-09-12T10:33:46.844928"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:34:08.116214"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:34:39.030027"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:35:09.990422"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:35:40.860153"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:36:12.182779"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:36:42.950111"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:37:14.255004"}
authentik-worker-1 | {"event": "Retrying message 'f7a0d3a2-62e7-4030-8fac-7a28ae1c7d42' in 12065 milliseconds.", "level": "info", "logger": "dramatiq.middleware.retries.Retries", "timestamp": "2025-09-12T10:37:24.101974"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:37:46.241771"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:38:18.409097"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:38:50.086215"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:39:21.217919"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:39:53.465173"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:40:24.163047"}
authentik-worker-1 | {"domain_url": null, "event": "/-/health/ready/", "level": "info", "logger": "authentik.worker", "method": "HEAD", "pid": 105, "schema_name": "public", "status": 200, "timestamp": "2025-09-12T10:40:55.050736"}
```
**Screenshots**
In this state, the task seems to also run for quite a while (older entries take only a couple seconds):
There do not seem to be any processes running under the leaked sessions:
**Version and Deployment (please complete the following information):**
- authentik version: 2025.8.1
- Deployment: docker-compose
Edit:
- Still an issue on 2025.8.3
- Seems to have started on update to 2025.8.0 from 2025.6.4
Contributor guide
Assessment
This issue has not been assessed yet.