Commit graph

692 commits

Author SHA1 Message Date
Lambda
b11cbb6991 Instrument rocksdb functions at TRACE level
This allows e.g. aggregate time statistics if you really care about it
by adding grapevine::database::abstraction::rocksdb=trace to the tracing
filter.
2024-06-26 06:11:59 +00:00
Matthias Ahouansou
9087da91db
fix(keys): only use keys valid at the time of PDU or transaction, and actually refresh keys
Previously, we only fetched keys once, only requesting them again if we have any missing, allowing for ancient keys to be used to sign PDUs and transactions
Now we refresh keys that either have or are about to expire, preventing attacks that make use of leaked private keys of a homeserver
We also ensure that when validating PDUs or transactions, that they are valid at the origin_server_ts or time of us receiving the transaction respectfully
As to not break event authorization for old rooms, we need to keep old keys around
We move verify_keys which we no longer see in direct requests to the origin to old_verify_keys
We keep old_verify_keys indefinitely as mentioned above, as to not break event authorization (at least until a future MSC addresses this)

Original patch by Matthias. Benjamin just rebased it onto grapevine and
fixed clippy/rustc warnings.

Co-authored-by: Benjamin Lee <benjamin@computer.surgery>
2024-06-12 11:10:50 -07:00
Matthias Ahouansou
f74043df9a
fix: de-index pdus when redacted 2024-06-12 10:27:39 -07:00
Benjamin Lee
cc5a9d3440
factor search tokenization out into a function
This ensures that the tokenization algorithm will remain in sync between
querying, indexing, and deindexing. The existing code had slightly
different behavior for querying, because it did not discard words with
>50 bytes. This was inconsequential, because >50 byte tokens are never
present in the index.
2024-06-12 10:26:14 -07:00
Charles Hall
0c2094a56f
record FoundIn with metrics instead of traces
This is much more efficient in terms of network use and data storage,
and also easier to visualize.
2024-06-06 20:56:36 -07:00
Charles Hall
22dd7f1a54
move FoundIn to observability.rs 2024-06-05 17:41:36 -07:00
Charles Hall
71f3d84115
rename password-related utils functions 2024-06-04 19:35:25 -07:00
Lambda
f35cbfd89e
More tracing spans 2024-06-04 13:32:31 -07:00
Lambda
2e34241465
tracing: add span for globals.watch()
This spawns a ton of futures which are otherwise all flat in the parent.
2024-06-04 13:32:31 -07:00
Lambda
12e7f525aa Clean up and deduplicate parse_servercurrentevent() 2024-05-29 20:42:59 +00:00
Lambda
18992b4d1d sending.rs: rename OutgoingKind to Destination
That's what it is. It describes the destination of the event.
2024-05-29 20:42:45 +00:00
Lambda
e294543ddb sending.rs: add RequestKey
Much easier to reason about than with a bunch of Vec<u8> everywhere.
2024-05-29 20:42:13 +00:00
Charles Hall
8f0fdfb2f2
upgrade all cargo dependencies
Unfortunately we need to pull tracing-opentelemetry from git because
there hasn't been a release including the dependency bump on the other
opentelemetry crates.
2024-05-26 19:47:00 -07:00
Charles Hall
13de9ecd41
enable unnecessary_to_owned lint
*facepalm*
2024-05-26 19:47:00 -07:00
Charles Hall
7e7911abcf
enable thread_local_initializer_can_be_made_const
There's barely enough room in the commit title for this lint's name...
2024-05-26 19:47:00 -07:00
Charles Hall
793d809ac6
enable unused_qualifications lint 2024-05-26 19:47:00 -07:00
Charles Hall
d7e945f4c5
enable dead_code lint 2024-05-26 19:46:48 -07:00
Lambda
67cb6f817d Instrument caches 2024-05-22 20:10:42 +00:00
Charles Hall
6e2eec012f
special case userroomid_highlightcount
This fixes the panic on startup with a fresh database.
2024-05-21 17:56:56 -07:00
Charles Hall
b3709f262e
panic when a column family would be created twice
`create_cf` already fails when the column family already exists, but
this gives us a much better error message; namely, it tells us what
column family name is at fault.
2024-05-21 17:48:33 -07:00
Charles Hall
53fbd3fc41
store old_cfs as a HashSet
This list can't have duplicates.
2024-05-21 17:25:23 -07:00
Lambda
edfccea30a Convert giant tuple in state_compressor to struct 2024-05-20 21:27:57 +00:00
Charles Hall
5cb2551422
enable error_on_line_overflow and fix errors
These required some manual intervention.
2024-05-16 19:11:40 -07:00
Charles Hall
0afc1d2f50
change rustfmt configuration
This change is fully automated, except the `rustfmt.toml` changes and
a few clippy directives to allow specific functions with too many lines
because they are longer now.
2024-05-16 19:11:40 -07:00
Charles Hall
ac53948450
use more, qualify less
Doing this will allow `rustfmt` to collapse lines more efficiently.
Specifically, a lot of these lines fail to wrap to 80 columns without
these changes.
2024-05-16 19:09:10 -07:00
Charles Hall
04184c6137
use gender-neutral pronouns 2024-05-16 16:17:40 -07:00
Charles Hall
05be778fbb
stop putting comments in the middle of call chains
`rustfmt` doesn't handle this very well.
2024-05-16 16:17:40 -07:00
Charles Hall
1911ad34d9
stop putting comments and code on the same line 2024-05-16 15:22:35 -07:00
Charles Hall
0915aba44c
remove commented-out code 2024-05-16 15:20:56 -07:00
Charles Hall
3efe3fb337
remove comments about filtering buggy items 2024-05-16 01:08:48 -07:00
Lambda
ad7a5ea777
Remove useless wrapper Services 2024-05-14 20:21:51 -07:00
Lambda
87a1012ab5
Replace Box::into_pin(Box::new( with Box::pin( 2024-05-14 20:21:51 -07:00
Charles Hall
a25f2ec950
add conduit compat mode
This makes it possible to deploy Grapevine while using a database
originally created by Conduit, including leaving the admin bot user's
localpart the same as before.
2024-05-14 20:21:51 -07:00
Charles Hall
3978b9c580
enable used_underscore_binding lint 2024-05-14 20:01:25 -07:00
Charles Hall
4419e855ae
enable unreadable_literal lint 2024-05-14 20:01:25 -07:00
Charles Hall
4e80dc028e
enable unnecessary_wraps lint 2024-05-14 20:01:25 -07:00
Charles Hall
75358340bb
enable single_match_else lint
Also collapses some if statements in the federation name resolution code
2024-05-14 20:01:24 -07:00
Charles Hall
a62fa7b6ee
enable similar_names lint 2024-05-14 20:01:24 -07:00
Charles Hall
db4951c5fd
enable semicolon_if_nothing_returned lint 2024-05-14 20:01:24 -07:00
Charles Hall
96e1877639
enable redundant_closure_for_method_calls lint 2024-05-14 20:01:24 -07:00
Charles Hall
224ba65d06
enable map_unwrap_or lint 2024-05-14 20:01:24 -07:00
Charles Hall
9606f59141
enable manual_let_else lint 2024-05-14 20:01:23 -07:00
Charles Hall
ebae8ceeb0
enable implicit_clone lint 2024-05-14 19:59:43 -07:00
Charles Hall
b0f65913f3
enable ignored_unit_patterns lint 2024-05-14 19:59:43 -07:00
Charles Hall
da440934bd
enable doc_markdown lint 2024-05-14 16:34:10 -07:00
Charles Hall
2b6a933538
enable undocumented_unsafe_blocks lint
There was only one unsafe block (thankfully) but it also had no docs.
I did some reading and found out this in fact safe, but only for cursed
reasons, and documented them. Also, the name of the type was misleading,
as the entire point is the aliasing, and `Box` is already non-aliasing.
2024-05-12 19:10:31 -07:00
Charles Hall
cc5977b4e4
enable same_name_method lint 2024-05-12 18:51:48 -07:00
Charles Hall
6bdaeab1af
enable multiple_inherent_impl lint 2024-05-12 18:51:27 -07:00
Charles Hall
4a7b9c16cc
enable missing_assert_message lint 2024-05-12 18:51:27 -07:00
Charles Hall
052f3088e9
enable let_underscore_must_use lint 2024-05-12 18:51:26 -07:00