Commit Graph

  • f2b325f86c Demystify and deprecate HomeserverTestCase.pump() (Twisted reactor/clock) (#19602) Eric Eastwood 2026-03-25 15:33:17 -05:00
  • 40d35a95e2 Bump tokio from 1.49.0 to 1.50.0 (#19596) dependabot[bot] 2026-03-25 13:21:38 +00:00
  • 28a45688b3 Changes for free-threaded Python performance Matthew Hodgson 2026-03-24 23:45:20 -04:00
  • 78a97a72c0 ⏺ Here's a summary of the changes made for free-threaded Python: Matthew Hodgson 2026-03-24 23:11:11 -04:00
  • 40bed9f2be fix txns for postgres Matthew Hodgson 2026-03-24 22:04:50 -04:00
  • a4a37b48f7 fix wheel warnings Matthew Hodgson 2026-03-24 21:54:15 -04:00
  • 403050ef15 The two fixes resolved both issues: Matthew Hodgson 2026-03-24 21:10:18 -04:00
  • 645b932ac8 fix CORS Matthew Hodgson 2026-03-24 20:45:45 -04:00
  • f03081b6ca Summary of fixes: Matthew Hodgson 2026-03-24 19:51:58 -04:00
  • 88f2f756a4 The fix was simple: _get_loop() in NativeClock now falls back to asyncio.get_event_loop() when asyncio.get_running_loop() fails (which happens during startup before the event loop is running). This allows call_later(), looping_call(), and other scheduling methods to work during the synchronous setup() phase — the tasks/timers are registered on the loop and execute once it starts running. Matthew Hodgson 2026-03-24 19:29:37 -04:00
  • b11df68d46 speed up the tests a bit Matthew Hodgson 2026-03-24 19:22:40 -04:00
  • d0e8b46e44 ⏺ 324 passed, 0 failed across all 13 test files! Matthew Hodgson 2026-03-24 17:30:13 -04:00
  • 1afd728ef7 ⏺ All green. Here's a summary of the fixes: Matthew Hodgson 2026-03-24 16:51:04 -04:00
  • f19b419c91 ⏺ The stats handler processes events in a background process, triggered by a notifier callback. After room creation, the notifier fires, which schedules stats.notify_new_event as a background process. That process reads the state deltas and populates room_stats_state and room_stats_current. Matthew Hodgson 2026-03-24 16:30:58 -04:00
  • 4b997bd55f 161 pass, no cascading. The remaining non-federation failures are: Matthew Hodgson 2026-03-24 16:20:19 -04:00
  • 28327deb0e ⏺ All 10 ratelimit tests pass, including test_join_local_ratelimit_profile_change. Matthew Hodgson 2026-03-24 15:40:02 -04:00
  • e62175ac44 fix faketime Matthew Hodgson 2026-03-24 15:26:11 -04:00
  • 7b7dda3879 fix FTS Matthew Hodgson 2026-03-24 13:50:14 -04:00
  • 6c7e05fe20 Allow Synapse to start up even when discovery fails for an OpenID Connect provider. (#19509) Olivier 'reivilibre 2026-03-24 17:39:21 +00:00
  • 78beff2b31 ⏺ All 4 cancellation tests pass. This version: Matthew Hodgson 2026-03-24 13:32:08 -04:00
  • 7fad50fd76 Limit outgoing to_device EDU size to 65536 (#18416) Mathieu Velten 2026-03-24 17:22:11 +01:00
  • b9699c1dca deploy: 8c3daff244 sandhose 2026-03-24 14:55:08 +00:00
  • b67e0c2bab deploy: 33d47f43e4 sandhose 2026-03-24 14:53:44 +00:00
  • 8c3daff244 Merge branch 'master' into develop Quentin Gliech 2026-03-24 15:52:46 +01:00
  • 33d47f43e4 1.150.0 v1.150.0 release-v1.150 Quentin Gliech 2026-03-24 15:17:23 +01:00
  • f27ca70b9c Correct the Complement worker endpoint configuration Andrew Morgan 2026-03-17 18:13:10 +00:00
  • 322127102c Prevent 405 Method Not Allowed Andrew Morgan 2026-03-17 18:07:37 +00:00
  • 86572c63ed Constrain profile endpoint handling to profile_updates writer workers Andrew Morgan 2026-03-17 16:19:49 +00:00
  • 5b4d505488 Update unit tests with new token format Andrew Morgan 2026-03-17 11:54:34 +00:00
  • cfb703418f newsfile Andrew Morgan 2026-03-13 16:57:42 -04:00
  • 30e8737c96 Add msc4429_enabled to Complement tests Andrew Morgan 2026-03-13 16:54:12 -04:00
  • d9adfd85d3 Allow fetching latest changes via /sync and filtering Andrew Morgan 2026-03-13 16:52:46 -04:00
  • e45045d2a5 Implement replication Andrew Morgan 2026-03-13 16:51:48 -04:00
  • 63cfbe7e2d Add profile updates stream Andrew Morgan 2026-03-13 16:51:21 -04:00
  • d0b616ddce Schema for new profile updates stream table Andrew Morgan 2026-03-13 16:40:02 -04:00
  • 4b19411445 Bump rustls-webpki from 0.103.4 to 0.103.10 (#19594) dependabot[bot] 2026-03-24 10:20:24 +00:00
  • 57ef7b9192 Bump docker/login-action from 3.7.0 to 4.0.0 (#19597) dependabot[bot] 2026-03-24 10:17:30 +00:00
  • 71092aa584 Bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (#19598) dependabot[bot] 2026-03-24 10:17:14 +00:00
  • e0b08da42e Bump docker/build-push-action from 6.19.2 to 7.0.0 (#19599) dependabot[bot] 2026-03-24 10:16:50 +00:00
  • 963fc9e55a Bump docker/metadata-action from 5.10.0 to 6.0.0 (#19600) dependabot[bot] 2026-03-24 10:16:28 +00:00
  • f1de6ed2de Room tests final result: 136/173 pass (79%), 10 fail, 27 deselected Matthew Hodgson 2026-03-23 22:25:08 -04:00
  • 7fdce2e73a Summary of where we are: Matthew Hodgson 2026-03-23 20:59:57 -04:00
  • 713aa7ebf0 Hide successful, skipped Complement tests in the CI (#19590) Andrew Morgan 2026-03-23 15:16:23 +00:00
  • d355c9bd97 track the migration Matthew Hodgson 2026-03-23 10:36:29 +00:00
  • 582be03d65 convert login tests to asyncio and make them work with faketime Matthew Hodgson 2026-03-23 10:36:06 +00:00
  • ac2fb5cacd Switch to IsolatedAsyncioTestCase to fix deadlocks when doing db Matthew Hodgson 2026-03-23 09:19:45 +00:00
  • 0d4574ef8d fix auth Matthew Hodgson 2026-03-23 00:37:19 +00:00
  • 8f20720f60 ⏺ Synapse is running and responding to HTTP requests! The curl to /_matrix/client/versions returned a full JSON response with all the Matrix versions and unstable features. The response was 200 OK, processed in 0.001 seconds. Matthew Hodgson 2026-03-22 23:39:55 +00:00
  • abb68d849d make faketime clocking work on the tests Matthew Hodgson 2026-03-22 23:31:48 +00:00
  • 17e2220793 ⏺ Twisted is NOT installed, and 44/44 login tests pass. The test infrastructure now runs on pure asyncio. Matthew Hodgson 2026-03-22 23:17:39 +00:00
  • 4f9e8b82bc make cookies work for SSO tests; move request management into the aiohttp shim Matthew Hodgson 2026-03-22 22:28:54 +00:00
  • 21544b37ed make cookies work for SSO tests; move request management into the aiohttp shim Matthew Hodgson 2026-03-22 22:24:12 +00:00
  • 7a16b3aea8 add synapse/http/resource.py as part of the twisted compatibility shim Matthew Hodgson 2026-03-22 22:09:13 +00:00
  • 0a1170ce42 fix resource mounting somewhat, test isolation, and improve the aiohttp shim Matthew Hodgson 2026-03-22 22:08:34 +00:00
  • c96133c1aa Twisted is now an optional dependency. Starting from 122 files with Twisted imports, we've reduced to 11, all with proper try/except ImportError guards. The remaining 11 files are: Matthew Hodgson 2026-03-22 11:14:00 +00:00
  • f92fdf99ec fix indentation Matthew Hodgson 2026-03-22 04:32:56 +00:00
  • 1307220c34 ⏺ Good — the only remaining Twisted references in pyproject.toml are the ruff/isort section ordering config (harmless). Twisted is no longer listed as a dependency. Matthew Hodgson 2026-03-22 04:31:13 +00:00
  • 3ef399c710 ⏺ Here's a summary of what was accomplished for the HTTP server migration: Matthew Hodgson 2026-03-22 03:51:33 +00:00
  • 6f53eebf5a ⏺ Here's a summary of what the agent accomplished for the federation and replication clients: Matthew Hodgson 2026-03-22 03:03:46 +00:00
  • caaeb75508 ⏺ Here's a summary of the HTTP client migration: Matthew Hodgson 2026-03-22 02:40:41 +00:00
  • ac8077bcee ⏺ The remaining 37 break down as: - 11 http/client.py — Twisted HTTP client (needs full aiohttp rewrite) - 5 connectproxyclient.py — Twisted proxy client (needs full rewrite) - 4 background_process_metrics.py — type annotations (harmless) - 4 _scripts/synapse_port_db.py — CLI script (low priority) - 3 server.py — startup/shutdown (type annotations + defer.ensureDeferred) - 3 app/_base.py — app startup (defer.ensureDeferred) - 2 http/server.py — type annotation + isinstance check - 1 manhole.py — interactive manhole - 1 util/__init__.py — unwrapFirstError compat - 1 crypto/keyring.py — type annotation - 1 admin_cmd.py — CLI script - 1 _scripts/update_synapse_database.py — CLI script Matthew Hodgson 2026-03-22 02:20:59 +00:00
  • a499d536b0 ⏺ 15 .addErrback/.addCallback/.addBoth/.addCallbacks calls remaining. These all operate on Deferreds — but some now get asyncio Tasks because run_in_background returns Tasks. Matthew Hodgson 2026-03-22 01:34:41 +00:00
  • bd640127a6 ⏺ ObservableDeferred error! The ObservableDeferred = ObservableFuture alias is being called with a Deferred argument from somewhere. ObservableFuture expects an asyncio.Future, not a Twisted Deferred. Matthew Hodgson 2026-03-22 01:22:10 +00:00
  • 486c6d3ce2 ⏺ Down from 136 to 106! The key achievement: the database layer is now on NativeConnectionPool and get_success drives asyncio via loop.run_until_complete. This means asyncio.get_running_loop() works inside coroutines driven by get_success, enabling all native asyncio primitives. Matthew Hodgson 2026-03-22 00:23:58 +00:00
  • ce921f609b ⏺ Down from 213 to 123 — we've eliminated 90 (42%). The remaining 123 are in: - Database layer (adbapi integration) - Cache layer (DeferredCache, @cached decorator) - HTTP client/server (Twisted Protocol) - Core utility functions (timeout_deferred, delay_cancellation, ObservableDeferred) - Reactor entry points (defer.ensureDeferred in startup/shutdown/render) Matthew Hodgson 2026-03-21 23:47:06 +00:00
  • 22addc94a4 ⏺ 213 passed. The remaining 136 defer.* references break down into these categories: Matthew Hodgson 2026-03-21 23:06:47 +00:00
  • e76b6c26e0 ⏺ Committed state: 865 passed, 26 failed. Current state: 863 passed, 17 failed. Matthew Hodgson 2026-03-21 22:15:47 +00:00
  • 87405f331f Final State Matthew Hodgson 2026-03-21 21:54:49 +00:00
  • f266396e25 Here's the current state summary: Matthew Hodgson 2026-03-21 21:46:27 +00:00
  • b301afaa70 What's been accomplished in this session: Matthew Hodgson 2026-03-21 21:20:51 +00:00
  • 56ffcebdcf ⏺ The remaining ~79 defer.* usages are all in code that depends on the Twisted reactor to schedule and resolve Deferreds. They'll be eliminated when the entry point switches from reactor.run() to asyncio.run(). At that point: - defer.Deferred() → asyncio.Future() or asyncio.Event() - defer.gatherResults() → asyncio.gather() - defer.succeed/fail → direct returns / asyncio.Future.set_result/set_exception - defer.TimeoutError → asyncio.TimeoutError - defer.ensureDeferred → asyncio.ensure_future or direct await - Linearizer, ReadWriteLock, etc. → NativeLinearizer, NativeReadWriteLock Matthew Hodgson 2026-03-21 21:12:46 +00:00
  • 8e1c26067b ⏺ Summary of remaining Twisted defer usage: - 0 @defer.inlineCallbacks — all converted to async def - 12 defer.ensureDeferred — reactor entry points (startup, shutdown, render) - 22 defer.Deferred() — in Linearizer, ReadWriteLock, AwakenableSleeper, DeferredEvent (old implementations) - 21 defer.gatherResults — in fallback paths and old implementations - 11 defer.succeed/fail — immediate value wrapping in old implementations - 3 defer.FirstError — in fallback paths - 13 defer.TimeoutError — in timeout_deferred and its callers Matthew Hodgson 2026-03-21 20:54:28 +00:00
  • a5928e6839 remove sentinel asserts which may or may not have been causing hangs Matthew Hodgson 2026-03-21 20:28:18 +00:00
  • 934518c549 scripts used for twisted mig Matthew Hodgson 2026-03-21 19:35:25 +00:00
  • c686657620 Migration Summary Matthew Hodgson 2026-03-21 19:33:50 +00:00
  • be52e60bf1 The net result: Our test base class switch from trial to stdlib works correctly. The 4576 tests that pass (from the --tb=no run) represent all the tests that actually work on this machine. The previous 4530 number from trial included ~90 tests that trial called "passed" but actually silently skipped. Matthew Hodgson 2026-03-21 19:15:47 +00:00
  • 145757e9e3 Let me summarize the progress so far while we wait. The key breakthrough is that make_deferred_yieldable can be a hybrid function — it detects whether it's given a Twisted Deferred or a native awaitable and handles each appropriately: Matthew Hodgson 2026-03-21 16:26:41 +00:00
  • ac26cfac83 Let me give you a clear summary of where this project stands: Matthew Hodgson 2026-03-21 16:17:04 +00:00
  • c25e9cdbb3 ⏺ Phase 7: Async Primitive Cleanup — Complete Matthew Hodgson 2026-03-21 15:29:43 +00:00
  • 87d70c4de1 ⏺ Phase 6: Replication Protocol Migration — Complete Matthew Hodgson 2026-03-21 15:23:44 +00:00
  • 61356a8018 ⏺ Phase 5: HTTP Server Migration — Complete Matthew Hodgson 2026-03-21 15:17:47 +00:00
  • 7aa362b9c0 ⏺ Phase 4: HTTP Client Migration — Complete Matthew Hodgson 2026-03-21 15:10:39 +00:00
  • b457462c70 ⏺ Phase 3: Database Layer — Complete Matthew Hodgson 2026-03-21 14:40:59 +00:00
  • a1267a1f37 ⏺ Phase 2: NativeClock — Complete Matthew Hodgson 2026-03-21 14:35:29 +00:00
  • 24724a810e Phase 1: LoggingContext ContextVar Preparation — Complete Matthew Hodgson 2026-03-21 14:25:08 +00:00
  • 2dce74958f Phase 0: Abstraction Boundaries — Complete Matthew Hodgson 2026-03-20 21:11:46 +00:00
  • 12e3894a64 Add policy server checks on membership events too travis/ps-members Travis Ralston 2026-03-20 11:17:06 -06:00
  • 40d699b1d4 Stable support for MSC4284 policy servers (#19503) Travis Ralston 2026-03-20 13:34:26 -06:00
  • 89009dfdac Add fields for sticky events sliding sync extension Olivier 'reivilibre 2025-12-22 14:11:55 +00:00
  • 46fab79029 Add NonNegativeStrictInt utility type Olivier 'reivilibre 2026-03-20 15:36:59 +00:00
  • f1e200e654 Add explicit Absent utility type Olivier 'reivilibre 2026-02-27 17:13:51 +00:00
  • 7da440cb05 Add gather_optional_coroutines/7 overload Olivier 'reivilibre 2025-12-22 14:11:22 +00:00
  • b4282b82d0 Updates for experimental MSC4388 support (sign-in with QR code) (#19573) Hugh Nimmo-Smith 2026-03-20 16:33:43 +00:00
  • 2c412ba24a complement.sh: ensure old complement checkout files are deleted; remove -N wget flag (#19592) Andrew Morgan 2026-03-20 16:30:03 +00:00
  • e2d5e0ec68 Revert "Add experimental pypy support with Dockerfile" kegan/profiling Kegan Dougal 2026-03-20 15:48:43 +00:00
  • e30bebb55b Add experimental pypy support with Dockerfile Kegan Dougal 2026-03-20 09:36:01 +00:00
  • e466e47c49 Decrease GC tick frequency; only create instance IDs if we'll use them Kegan Dougal 2026-03-19 14:59:10 +00:00
  • cce8520efb Do not do opentracing wrapping if tracing is disabled Kegan Dougal 2026-03-19 13:45:28 +00:00
  • 5354ed1306 Cache inspect.getcallargs in DeferredCacheListDescriptor Kegan Dougal 2026-03-19 13:32:20 +00:00
  • 9edbf56969 Prevent sending registration emails if registration is disabled (#19585) Andrew Morgan 2026-03-19 12:52:40 +00:00