Skip to content
Snippets Groups Projects
  1. Aug 10, 2021
  2. Aug 06, 2021
    • Patrick Cloke's avatar
      Convert Transaction and Edu object to attrs (#10542) · 1de26b34
      Patrick Cloke authored
      Instead of wrapping the JSON into an object, this creates concrete
      instances for Transaction and Edu. This allows for improved type
      hints and simplified code.
      1de26b34
    • Erik Johnston's avatar
    • Richard van der Hoff's avatar
      Clean up federation event auth code (#10539) · 1bebc0b7
      Richard van der Hoff authored
      * drop old-room hack
      
      pretty sure we don't need this any more.
      
      * Remove incorrect comment about modifying `context`
      
      It doesn't look like the supplied context is ever modified.
      
      * Stop `_auth_and_persist_event` modifying its parameters
      
      This is only called in three places. Two of them don't pass `auth_events`, and
      the third doesn't use the dict after passing it in, so this should be non-functional.
      
      * Stop `_check_event_auth` modifying its parameters
      
      `_check_event_auth` is only called in three places. `on_send_membership_event`
      doesn't pass an `auth_events`, and `prep` and `_auth_and_persist_event` do not
      use the map after passing it in.
      
      * Stop `_update_auth_events_and_context_for_auth` modifying its parameters
      
      Return the updated auth event dict, rather than modifying the parameter.
      
      This is only called from `_check_event_auth`.
      
      * Improve documentation on `_auth_and_persist_event`
      
      Rename `auth_events` parameter to better reflect what it contains.
      
      * Improve documentation on `_NewEventInfo`
      
      * Improve documentation on `_check_event_auth`
      
      rename `auth_events` parameter to better describe what it contains
      
      * changelog
      1bebc0b7
    • Patrick Cloke's avatar
      Update the API response for spaces summary over federation. (#10530) · f4ade972
      Patrick Cloke authored
      This adds 'allowed_room_ids' (in addition to 'allowed_spaces', for backwards
      compatibility) to the federation response of the spaces summary.
      
      A future PR will remove the 'allowed_spaces' flag.
      f4ade972
    • Richard van der Hoff's avatar
      Add a setting to disable TLS for sending email (#10546) · 74d73366
      Richard van der Hoff authored
      This is mostly useful in case the server offers TLS, but doesn't present a valid certificate.
      74d73366
    • Eric Eastwood's avatar
      Mark all MSC2716 events as historical (#10537) · f5a368bb
      Eric Eastwood authored
      * Mark all MSC2716 events as historical
      f5a368bb
  3. Aug 05, 2021
  4. Aug 04, 2021
    • Michael Telatynski's avatar
      Send unstable-prefixed room_type in store-invite IS API requests (#10435) · 9db24cc5
      Michael Telatynski authored
      The room type is per MSC3288 to allow the identity-server to
      change invitation wording based on whether the invitation is to
      a room or a space.
      
      The prefixed key will be replaced once MSC3288 is accepted
      into the spec.
      9db24cc5
    • Eric Eastwood's avatar
      Add support for MSC2716 marker events (#10498) · 684d19a1
      Eric Eastwood authored
      * Make historical messages available to federated servers
      
      Part of MSC2716: https://github.com/matrix-org/matrix-doc/pull/2716
      
      Follow-up to https://github.com/matrix-org/synapse/pull/9247
      
      * Debug message not available on federation
      
      * Add base starting insertion point when no chunk ID is provided
      
      * Fix messages from multiple senders in historical chunk
      
      Follow-up to https://github.com/matrix-org/synapse/pull/9247
      
      Part of MSC2716: https://github.com/matrix-org/matrix-doc/pull/2716
      
      ---
      
      Previously, Synapse would throw a 403,
      `Cannot force another user to join.`,
      because we were trying to use `?user_id` from a single virtual user
      which did not match with messages from other users in the chunk.
      
      * Remove debug lines
      
      * Messing with selecting insertion event extremeties
      
      * Move db schema change to new version
      
      * Add more better comments
      
      * Make a fake requester with just what we need
      
      See https://github.com/matrix-org/synapse/pull/10276#discussion_r660999080
      
      * Store insertion events in table
      
      * Make base insertion event float off on its own
      
      See https://github.com/matrix-org/synapse/pull/10250#issuecomment-875711889
      
      Conflicts:
      	synapse/rest/client/v1/room.py
      
      * Validate that the app service can actually control the given user
      
      See https://github.com/matrix-org/synapse/pull/10276#issuecomment-876316455
      
      Conflicts:
      	synapse/rest/client/v1/room.py
      
      * Add some better comments on what we're trying to check for
      
      * Continue debugging
      
      * Share validation logic
      
      * Add inserted historical messages to /backfill response
      
      * Remove debug sql queries
      
      * Some marker event implemntation trials
      
      * Clean up PR
      
      * Rename insertion_event_id to just event_id
      
      * Add some better sql comments
      
      * More accurate description
      
      * Add changelog
      
      * Make it clear what MSC the change is part of
      
      * Add more detail on which insertion event came through
      
      * Address review and improve sql queries
      
      * Only use event_id as unique constraint
      
      * Fix test case where insertion event is already in the normal DAG
      
      * Remove debug changes
      
      * Add support for MSC2716 marker events
      
      * Process markers when we receive it over federation
      
      * WIP: make hs2 backfill historical messages after marker event
      
      * hs2 to better ask for insertion event extremity
      
      But running into the `sqlite3.IntegrityError: NOT NULL constraint failed: event_to_state_groups.state_group`
      error
      
      * Add insertion_event_extremities table
      
      * Switch to chunk events so we can auth via power_levels
      
      Previously, we were using `content.chunk_id` to connect one
      chunk to another. But these events can be from any `sender`
      and we can't tell who should be able to send historical events.
      We know we only want the application service to do it but these
      events have the sender of a real historical message, not the
      application service user ID as the sender. Other federated homeservers
      also have no indicator which senders are an application service on
      the originating homeserver.
      
      So we want to auth all of the MSC2716 events via power_levels
      and have them be sent by the application service with proper
      PL levels in the room.
      
      * Switch to chunk events for federation
      
      * Add unstable room version to support new historical PL
      
      * Messy: Fix undefined state_group for federated historical events
      
      ```
      2021-07-13 02:27:57,810 - synapse.handlers.federation - 1248 - ERROR - GET-4 - Failed to backfill from hs1 because NOT NULL constraint failed: event_to_state_groups.state_group
      Traceback (most recent call last):
        File "/usr/local/lib/python3.8/site-packages/synapse/handlers/federation.py", line 1216, in try_backfill
          await self.backfill(
        File "/usr/local/lib/python3.8/site-packages/synapse/handlers/federation.py", line 1035, in backfill
          await self._auth_and_persist_event(dest, event, context, backfilled=True)
        File "/usr/local/lib/python3.8/site-packages/synapse/handlers/federation.py", line 2222, in _auth_and_persist_event
          await self._run_push_actions_and_persist_event(event, context, backfilled)
        File "/usr/local/lib/python3.8/site-packages/synapse/handlers/federation.py", line 2244, in _run_push_actions_and_persist_event
          await self.persist_events_and_notify(
        File "/usr/local/lib/python3.8/site-packages/synapse/handlers/federation.py", line 3290, in persist_events_and_notify
          events, max_stream_token = await self.storage.persistence.persist_events(
        File "/usr/local/lib/python3.8/site-packages/synapse/logging/opentracing.py", line 774, in _trace_inner
          return await func(*args, **kwargs)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/persist_events.py", line 320, in persist_events
          ret_vals = await yieldable_gather_results(enqueue, partitioned.items())
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/persist_events.py", line 237, in handle_queue_loop
          ret = await self._per_item_callback(
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/persist_events.py", line 577, in _persist_event_batch
          await self.persist_events_store._persist_events_and_state_updates(
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/databases/main/events.py", line 176, in _persist_events_and_state_updates
          await self.db_pool.runInteraction(
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 681, in runInteraction
          result = await self.runWithConnection(
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 770, in runWithConnection
          return await make_deferred_yieldable(
        File "/usr/local/lib/python3.8/site-packages/twisted/python/threadpool.py", line 238, in inContext
          result = inContext.theWork()  # type: ignore[attr-defined]
        File "/usr/local/lib/python3.8/site-packages/twisted/python/threadpool.py", line 254, in <lambda>
          inContext.theWork = lambda: context.call(  # type: ignore[attr-defined]
        File "/usr/local/lib/python3.8/site-packages/twisted/python/context.py", line 118, in callWithContext
          return self.currentContext().callWithContext(ctx, func, *args, **kw)
        File "/usr/local/lib/python3.8/site-packages/twisted/python/context.py", line 83, in callWithContext
          return func(*args, **kw)
        File "/usr/local/lib/python3.8/site-packages/twisted/enterprise/adbapi.py", line 293, in _runWithConnection
          compat.reraise(excValue, excTraceback)
        File "/usr/local/lib/python3.8/site-packages/twisted/python/deprecate.py", line 298, in deprecatedFunction
          return function(*args, **kwargs)
        File "/usr/local/lib/python3.8/site-packages/twisted/python/compat.py", line 403, in reraise
          raise exception.with_traceback(traceback)
        File "/usr/local/lib/python3.8/site-packages/twisted/enterprise/adbapi.py", line 284, in _runWithConnection
          result = func(conn, *args, **kw)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 765, in inner_func
          return func(db_conn, *args, **kwargs)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 549, in new_transaction
          r = func(cursor, *args, **kwargs)
        File "/usr/local/lib/python3.8/site-packages/synapse/logging/utils.py", line 69, in wrapped
          return f(*args, **kwargs)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/databases/main/events.py", line 385, in _persist_events_txn
          self._store_event_state_mappings_txn(txn, events_and_contexts)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/databases/main/events.py", line 2065, in _store_event_state_mappings_txn
          self.db_pool.simple_insert_many_txn(
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 923, in simple_insert_many_txn
          txn.execute_batch(sql, vals)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 280, in execute_batch
          self.executemany(sql, args)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 300, in executemany
          self._do_execute(self.txn.executemany, sql, *args)
        File "/usr/local/lib/python3.8/site-packages/synapse/storage/database.py", line 330, in _do_execute
          return func(sql, *args)
      sqlite3.IntegrityError: NOT NULL constraint failed: event_to_state_groups.state_group
      ```
      
      * Revert "Messy: Fix undefined state_group for federated historical events"
      
      This reverts commit 187ab28611546321e02770944c86f30ee2bc742a.
      
      * Fix federated events being rejected for no state_groups
      
      Add fix from https://github.com/matrix-org/synapse/pull/10439
      until it merges.
      
      * Adapting to experimental room version
      
      * Some log cleanup
      
      * Add better comments around extremity fetching code and why
      
      * Rename to be more accurate to what the function returns
      
      * Add changelog
      
      * Ignore rejected events
      
      * Use simplified upsert
      
      * Add Erik's explanation of extra event checks
      
      See https://github.com/matrix-org/synapse/pull/10498#discussion_r680880332
      
      * Clarify that the depth is not directly correlated to the backwards extremity that we return
      
      See https://github.com/matrix-org/synapse/pull/10498#discussion_r681725404
      
      * lock only matters for sqlite
      
      See https://github.com/matrix-org/synapse/pull/10498#discussion_r681728061
      
      * Move new SQL changes to its own delta file
      
      * Clean up upsert docstring
      
      * Bump database schema version (62)
      684d19a1
    • Brendan Abolivier's avatar
    • Brendan Abolivier's avatar
      Fixup changelog · cc1cb0ab
      Brendan Abolivier authored
      cc1cb0ab
    • Brendan Abolivier's avatar
      Fixup changelog · 167335bd
      Brendan Abolivier authored
      167335bd
    • Brendan Abolivier's avatar
      1.40.0rc2 · 02c2f631
      Brendan Abolivier authored
      02c2f631
    • Brendan Abolivier's avatar
      Don't fail on empty bodies when sending out read receipts (#10531) · e8a3e814
      Brendan Abolivier authored
      Fixes a bug introduced in rc1 that would cause Synapse to 400 on read receipts requests with empty bodies.
      
      Broken in #10413
      e8a3e814
    • Erik Johnston's avatar
      Improve event caching code (#10119) · c37dad67
      Erik Johnston authored
      Ensure we only load an event from the DB once when the same event is requested multiple times at once.
      c37dad67
    • Erik Johnston's avatar
    • Jason Robinson's avatar
      Add `get_userinfo_by_id` method to `ModuleApi` (#9581) · c2000ab3
      Jason Robinson authored
      
      Makes it easier to fetch user details in for example spam checker modules, without needing to use api._store or figure out database interactions.
      
      Signed-off-by: default avatarJason Robinson <jasonr@matrix.org>
      c2000ab3
  5. Aug 03, 2021
  6. Aug 02, 2021
Loading