remove jemalloc support

It's no longer being developed and it is very very annoying to maintain
support for.
This commit is contained in:
Charles Hall 2025-07-21 21:36:42 -07:00
parent 55a01e7113
commit e6dbc293f1
8 changed files with 27 additions and 89 deletions

21
Cargo.lock generated
View file

@ -963,7 +963,6 @@ dependencies = [
"tempfile", "tempfile",
"thiserror 2.0.12", "thiserror 2.0.12",
"thread_local", "thread_local",
"tikv-jemallocator",
"tokio", "tokio",
"toml", "toml",
"tower 0.5.2", "tower 0.5.2",
@ -3263,26 +3262,6 @@ dependencies = [
"once_cell", "once_cell",
] ]
[[package]]
name = "tikv-jemalloc-sys"
version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "tikv-jemallocator"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865"
dependencies = [
"libc",
"tikv-jemalloc-sys",
]
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.41" version = "0.3.41"

View file

@ -133,7 +133,6 @@ sha-1 = "0.10.1"
strum = { version = "0.27.1", features = ["derive"] } strum = { version = "0.27.1", features = ["derive"] }
thiserror = "2.0.12" thiserror = "2.0.12"
thread_local = "1.1.8" thread_local = "1.1.8"
tikv-jemallocator = { version = "0.6.0", features = ["unprefixed_malloc_on_supported_platforms"], optional = true }
tokio = { version = "1.44.1", features = ["fs", "macros", "signal", "sync"] } tokio = { version = "1.44.1", features = ["fs", "macros", "signal", "sync"] }
toml = "0.8.20" toml = "0.8.20"
tower = { version = "0.5.2", features = ["util"] } tower = { version = "0.5.2", features = ["util"] }
@ -164,7 +163,6 @@ opt-level = 3
default = ["rocksdb", "sqlite", "systemd"] default = ["rocksdb", "sqlite", "systemd"]
# Keep sorted # Keep sorted
jemalloc = ["dep:tikv-jemallocator"]
rocksdb = ["dep:rocksdb"] rocksdb = ["dep:rocksdb"]
sqlite = ["dep:rusqlite", "dep:parking_lot", "tokio/signal"] sqlite = ["dep:rusqlite", "dep:parking_lot", "tokio/signal"]
systemd = ["dep:sd-notify"] systemd = ["dep:sd-notify"]

View file

@ -85,6 +85,8 @@ This will be the first release of Grapevine since it was forked from Conduit
`global.pdu_cache_capacity` configuration options. `global.pdu_cache_capacity` configuration options.
([!124](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/124)) ([!124](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/124))
* Instead, it is now possible to configure each cache capacity individually. * Instead, it is now possible to configure each cache capacity individually.
10. Remove jemalloc support.
([!93](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/193))
### Changed ### Changed
@ -171,81 +173,79 @@ This will be the first release of Grapevine since it was forked from Conduit
([!20 (263edcc)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/20/diffs?commit_id=263edcc8a127ad2a541a3bb6ad35a8a459ea5616)) ([!20 (263edcc)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/20/diffs?commit_id=263edcc8a127ad2a541a3bb6ad35a8a459ea5616))
6. Reduce the likelihood of locking up the async runtime. 6. Reduce the likelihood of locking up the async runtime.
([!19](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/19)) ([!19](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/19))
7. Fix dynamically linked jemalloc builds. 7. Fix search results not including subsequent pages in certain situations.
([!23](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/23))
8. Fix search results not including subsequent pages in certain situations.
([!35 (0cdf032)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/35/diffs?commit_id=0cdf03288ab8fa363c313bd929c8b5183d14ab77)) ([!35 (0cdf032)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/35/diffs?commit_id=0cdf03288ab8fa363c313bd929c8b5183d14ab77))
9. Fix search results missing events in subsequent pages in certain situations. 8. Fix search results missing events in subsequent pages in certain situations.
([!35 (3551a6e)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/35/diffs?commit_id=3551a6ef7a29219b9b30f50a7e8c92b92debcdcf)) ([!35 (3551a6e)](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/35/diffs?commit_id=3551a6ef7a29219b9b30f50a7e8c92b92debcdcf))
10. Only process admin commands if the admin bot is in the admin room. 9. Only process admin commands if the admin bot is in the admin room.
([!43](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/43)) ([!43](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/43))
11. Fix bug where invalid account data from a client could prevent a user from 10. Fix bug where invalid account data from a client could prevent a user from
joining any upgraded rooms and brick rooms that affected users attempted to joining any upgraded rooms and brick rooms that affected users attempted to
upgrade. upgrade.
([!53](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/53)) ([!53](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/53))
12. Fix bug where unexpected keys were deleted from `m.direct` account data 11. Fix bug where unexpected keys were deleted from `m.direct` account data
events when joining an upgraded room. events when joining an upgraded room.
([!53](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/53)) ([!53](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/53))
13. Fixed appservice users not receiving federated invites if the local server 12. Fixed appservice users not receiving federated invites if the local server
isn't already resident in the room isn't already resident in the room
([!80](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/80)) ([!80](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/80))
14. Fix bug where, if a server has multiple public keys, only one would be fetched. 13. Fix bug where, if a server has multiple public keys, only one would be fetched.
([!78](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/78)) ([!78](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/78))
15. Fix bug where expired keys may not be re-fetched in some scenarios. 14. Fix bug where expired keys may not be re-fetched in some scenarios.
([!78](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/78)) ([!78](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/78))
16. Fix bug where signing keys would not be fetched when joining a room if we 15. Fix bug where signing keys would not be fetched when joining a room if we
hadn't previously seen any signing keys from that server. hadn't previously seen any signing keys from that server.
([!87](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/87)) ([!87](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/87))
17. Fixed bug 16. Fixed bug
([#48](https://gitlab.computer.surgery/matrix/grapevine/-/issues/48)) ([#48](https://gitlab.computer.surgery/matrix/grapevine/-/issues/48))
that caused us to attempt to fetch our own signing keys from ourselves over that caused us to attempt to fetch our own signing keys from ourselves over
federation, and fail ("Won't send federation request to ourselves"). federation, and fail ("Won't send federation request to ourselves").
([!96](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/96)) ([!96](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/96))
18. Fixed incoming HTTP/2 requests failing federation signature check. 17. Fixed incoming HTTP/2 requests failing federation signature check.
([!104](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/104)) ([!104](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/104))
19. Return 403 instead of 500 when joins to a local-only room are denied. 18. Return 403 instead of 500 when joins to a local-only room are denied.
Consequently fixes Heisenbridge being unable to join puppeted users to its Consequently fixes Heisenbridge being unable to join puppeted users to its
rooms ([#85](https://gitlab.computer.surgery/matrix/grapevine/-/issues/85)). rooms ([#85](https://gitlab.computer.surgery/matrix/grapevine/-/issues/85)).
([!127](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/127)) ([!127](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/127))
20. Fix handling of v11 rooms with `m.room.create` event content that passes 19. Fix handling of v11 rooms with `m.room.create` event content that passes
the authorization rules but doesn't match other parts of the spec. the authorization rules but doesn't match other parts of the spec.
([!139](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/139)) ([!139](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/139))
21. Fix tiebreaking comparisons between events during state resolution. This 20. Fix tiebreaking comparisons between events during state resolution. This
will reduce the rate at which servers disagree about the state of rooms. will reduce the rate at which servers disagree about the state of rooms.
([!141](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/141)) ([!141](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/141))
22. Fix bug where the backoff state for remote device key queries was not reset 21. Fix bug where the backoff state for remote device key queries was not reset
after a successful request, causing an increasing rate of key query failures after a successful request, causing an increasing rate of key query failures
over time until a server restart. over time until a server restart.
([!149](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/149)) ([!149](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/149))
23. Fix bug where remote key queries that were skipped because the target server 22. Fix bug where remote key queries that were skipped because the target server
was in backoff would increment the backoff delay further, leading to a was in backoff would increment the backoff delay further, leading to a
positive feedback loop. positive feedback loop.
([!149](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/149)) ([!149](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/149))
24. Return 504 M_NOT_YET_UPLOADED instead of 500 M_UNKNOWN when a media file is 23. Return 504 M_NOT_YET_UPLOADED instead of 500 M_UNKNOWN when a media file is
present in the database but the contents are missing in the filesystem. present in the database but the contents are missing in the filesystem.
Removing media from the filesystem was the only way to delete media before Removing media from the filesystem was the only way to delete media before
[!99](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/99), [!99](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/99),
so this situation is common. so this situation is common.
([!55](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/55)) ([!55](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/55))
([!153](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/153)) ([!153](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/153))
25. Return 400 M_BAD_ALIAS from 24. Return 400 M_BAD_ALIAS from
[PUT /_matrix/client/v3/rooms/{roomId}/state/{eventType}/{stateKey}](https://spec.matrix.org/latest/client-server-api/#put_matrixclientv3roomsroomidstateeventtypestatekey) [PUT /_matrix/client/v3/rooms/{roomId}/state/{eventType}/{stateKey}](https://spec.matrix.org/latest/client-server-api/#put_matrixclientv3roomsroomidstateeventtypestatekey)
instead of 400 M_FORBIDDEN when trying to set a canonical alias that does instead of 400 M_FORBIDDEN when trying to set a canonical alias that does
not exist. not exist.
([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158)) ([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158))
26. Validate schema of new `m.room.canonical_alias` event sent by clients, 25. Validate schema of new `m.room.canonical_alias` event sent by clients,
rather than silently allowing any contents if the event can't be parsed. rather than silently allowing any contents if the event can't be parsed.
([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158)) ([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158))
27. Only validate canonical aliases that are new, rather than rather than 26. Only validate canonical aliases that are new, rather than rather than
revalidating every alias. This makes it possible to add/remove aliases when revalidating every alias. This makes it possible to add/remove aliases when
some of the existing aliases cannot be validated. some of the existing aliases cannot be validated.
([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158)) ([!158](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/158))
28. Fix read receipts not being sent over federation (or only arbitrarily late) 27. Fix read receipts not being sent over federation (or only arbitrarily late)
([!162](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/162)) ([!162](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/162))
29. Fix bug where ban reasons would be ignored when the banned user already had 28. Fix bug where ban reasons would be ignored when the banned user already had
a member event in the room. a member event in the room.
([!185](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/185)) ([!185](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/185))
30. Stop stripping unknown properties from redaction events before sending them 29. Stop stripping unknown properties from redaction events before sending them
to clients. to clients.
([!191](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/191)) ([!191](https://gitlab.computer.surgery/matrix/grapevine/-/merge_requests/191))

View file

@ -37,10 +37,6 @@
inherit (pkgs) rocksdb; inherit (pkgs) rocksdb;
}; };
rust-jemalloc-sys = self.callPackage ./nix/pkgs/rust-jemalloc-sys {
inherit (pkgs) rust-jemalloc-sys;
};
shell = self.callPackage ./nix/shell.nix {}; shell = self.callPackage ./nix/shell.nix {};
# The Rust toolchain to use # The Rust toolchain to use

View file

@ -6,7 +6,6 @@
, pkgsBuildHost , pkgsBuildHost
, rocksdb , rocksdb
, rust , rust
, rust-jemalloc-sys
, snappy , snappy
, stdenv , stdenv
@ -35,19 +34,12 @@ let
lib.optionals default-features allDefaultFeatures ++ lib.optionals default-features allDefaultFeatures ++
lib.optionals all-features allFeatures); lib.optionals all-features allFeatures);
featureEnabled = feature : builtins.elem feature features';
buildDepsOnlyEnv = buildDepsOnlyEnv =
let
rocksdb' = rocksdb.override {
enableJemalloc = featureEnabled "jemalloc";
};
in
{ {
NIX_OUTPATH_USED_AS_RANDOM_SEED = "randomseed"; NIX_OUTPATH_USED_AS_RANDOM_SEED = "randomseed";
CARGO_PROFILE = profile; CARGO_PROFILE = profile;
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include"; ROCKSDB_INCLUDE_DIR = "${rocksdb}/include";
ROCKSDB_LIB_DIR = "${rocksdb'}/lib"; ROCKSDB_LIB_DIR = "${rocksdb}/lib";
} }
// //
(import ./cross-compilation-env.nix { (import ./cross-compilation-env.nix {
@ -86,8 +78,6 @@ let
dontStrip = profile != "release"; dontStrip = profile != "release";
buildInputs = lib.optional (featureEnabled "jemalloc") rust-jemalloc-sys;
nativeBuildInputs = [ nativeBuildInputs = [
# bindgen needs the build platform's libclang. Apparently due to "splicing # bindgen needs the build platform's libclang. Apparently due to "splicing
# weirdness", pkgs.rustPlatform.bindgenHook on its own doesn't quite do the # weirdness", pkgs.rustPlatform.bindgenHook on its own doesn't quite do the

View file

@ -2,10 +2,6 @@
{ inputs { inputs
, lib , lib
, rocksdb , rocksdb
, rust-jemalloc-sys
# Options (keep sorted)
, enableJemalloc ? false
}: }:
let let
@ -17,10 +13,7 @@ let
(builtins.readFile ../../../flake.lock) (builtins.readFile ../../../flake.lock)
).nodes.rocksdb.original.ref; ).nodes.rocksdb.original.ref;
})).override { })).override {
jemalloc = rust-jemalloc-sys;
enableLiburing = false; enableLiburing = false;
inherit enableJemalloc;
}; };
cVersion = rocksdb'.version; cVersion = rocksdb'.version;

View file

@ -1,12 +0,0 @@
# This derivation will set the JEMALLOC_OVERRIDE variable, causing the
# tikv-jemalloc-sys crate to use the nixpkgs jemalloc instead of building it's
# own. In order for this to work, we need to set flags on the build that match
# whatever flags tikv-jemalloc-sys was going to use. These are dependent on
# which features we enable in tikv-jemalloc-sys.
{ rust-jemalloc-sys }:
rust-jemalloc-sys.override {
# tikv-jemalloc-sys/unprefixed_malloc_on_supported_platforms feature
unprefixed = true;
}

View file

@ -5,8 +5,6 @@
use std::process::ExitCode; use std::process::ExitCode;
use clap::Parser; use clap::Parser;
#[cfg(all(not(target_env = "msvc"), feature = "jemalloc"))]
use tikv_jemallocator::Jemalloc;
use tracing::{error, info}; use tracing::{error, info};
mod api; mod api;
@ -23,10 +21,6 @@ pub(crate) use config::Config;
pub(crate) use service::{pdu::PduEvent, services, Services}; pub(crate) use service::{pdu::PduEvent, services, Services};
pub(crate) use utils::error::{Error, Result}; pub(crate) use utils::error::{Error, Result};
#[cfg(all(not(target_env = "msvc"), feature = "jemalloc"))]
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;
/// Returns the current version of the crate with extra info if supplied /// Returns the current version of the crate with extra info if supplied
/// ///
/// Set the environment variable `GRAPEVINE_VERSION_EXTRA` to any UTF-8 string /// Set the environment variable `GRAPEVINE_VERSION_EXTRA` to any UTF-8 string