Skip to content

Improve performance of encrypted sqlite DB #3697

Open
@kegsay

Description

@kegsay

As seen in matrix-org/complement-crypto#122 which times out due to how slow it gets with encryption enabled via .Passphrase being set on the client_builder.

Example timings:

  • TestAliceBobEncryptionWorks/{rust_hs1}|{rust_hs1} - this creates 2 clients, 1 room and Alice sends 1 message to Bob. It's the simplest E2EE test. 910ms without encrypted DB, 4.86s with.
  • TestFallbackKeyIsUsedIfOneTimeKeysRunOut - this consumes all OTKs (blocking the client uploading more) then claims the fallback key, so it will cause the client to re-upload 50 OTKs. 2.52s without, 8.43s with.
  • Overall: 3m29s to run without, 9m28s to run with.

This is 3-5x worse.

This means I can't realistically enable encrypted DBs in tests, which is desirable in order to match EX.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions