diff --git a/src/appservice_server.rs b/src/appservice_server.rs
index b2154b8d5c701209f1e9f4de33303ad007ac000b..8d6d0527182dce77fb3209eff186dc2fcc8bef8d 100644
--- a/src/appservice_server.rs
+++ b/src/appservice_server.rs
@@ -4,6 +4,7 @@
 use std::{fmt::Debug, mem, time::Duration};
 use tracing::warn;
 
+#[tracing::instrument(skip(globals, request))]
 pub(crate) async fn send_request<T: OutgoingRequest>(
     globals: &crate::database::globals::Globals,
     registration: serde_yaml::Value,
diff --git a/src/client_server/account.rs b/src/client_server/account.rs
index 2b2e6e652ba482f742c131132301ee37c3e2caad..c15d820e466970f684cca0d2de1e5ac51c677e14 100644
--- a/src/client_server/account.rs
+++ b/src/client_server/account.rs
@@ -40,7 +40,6 @@
 /// - No user or appservice on this server already claimed this username
 ///
 /// Note: This will not reserve the username, so the username might become invalid when trying to register
-#[tracing::instrument(skip(db, body))]
 pub async fn get_register_available_route(
     db: DatabaseGuard,
     body: Ruma<get_username_availability::Request<'_>>,
@@ -84,7 +83,6 @@ pub async fn get_register_available_route(
 /// - If type is not guest and no username is given: Always fails after UIAA check
 /// - Creates a new account and populates it with default account data
 /// - If `inhibit_login` is false: Creates a device and returns device id and access_token
-#[tracing::instrument(skip(db, body))]
 pub async fn register_route(
     db: DatabaseGuard,
     body: Ruma<register::Request<'_>>,
@@ -267,7 +265,6 @@ pub async fn register_route(
 /// - Deletes device metadata (device id, device display name, last seen ip, last seen ts)
 /// - Forgets to-device events
 /// - Triggers device list updates
-#[tracing::instrument(skip(db, body))]
 pub async fn change_password_route(
     db: DatabaseGuard,
     body: Ruma<change_password::Request<'_>>,
@@ -332,7 +329,6 @@ pub async fn change_password_route(
 /// Get user_id of the sender user.
 ///
 /// Note: Also works for Application Services
-#[tracing::instrument(skip(body))]
 pub async fn whoami_route(body: Ruma<whoami::Request>) -> Result<whoami::Response> {
     let sender_user = body.sender_user.as_ref().expect("user is authenticated");
     Ok(whoami::Response {
@@ -350,7 +346,6 @@ pub async fn whoami_route(body: Ruma<whoami::Request>) -> Result<whoami::Respons
 /// - Forgets all to-device events
 /// - Triggers device list updates
 /// - Removes ability to log in again
-#[tracing::instrument(skip(db, body))]
 pub async fn deactivate_route(
     db: DatabaseGuard,
     body: Ruma<deactivate::Request<'_>>,
diff --git a/src/client_server/alias.rs b/src/client_server/alias.rs
index eecd72a4e4b88463bb415967b6afd48876106528..509372c416f1bd8ae4fa308c015a51bc398eaa65 100644
--- a/src/client_server/alias.rs
+++ b/src/client_server/alias.rs
@@ -15,7 +15,6 @@
 /// # `PUT /_matrix/client/r0/directory/room/{roomAlias}`
 ///
 /// Creates a new room alias on this server.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_alias_route(
     db: DatabaseGuard,
     body: Ruma<create_alias::Request<'_>>,
@@ -45,7 +44,6 @@ pub async fn create_alias_route(
 ///
 /// - TODO: additional access control checks
 /// - TODO: Update canonical alias event
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_alias_route(
     db: DatabaseGuard,
     body: Ruma<delete_alias::Request<'_>>,
@@ -71,7 +69,6 @@ pub async fn delete_alias_route(
 /// Resolve an alias locally or over federation.
 ///
 /// - TODO: Suggest more servers to join via
-#[tracing::instrument(skip(db, body))]
 pub async fn get_alias_route(
     db: DatabaseGuard,
     body: Ruma<get_alias::Request<'_>>,
diff --git a/src/client_server/backup.rs b/src/client_server/backup.rs
index acff437e46dea35c299c46b0f32071f011ddd1ca..14c239b16b763aa9db9246fb493211e52e8d2693 100644
--- a/src/client_server/backup.rs
+++ b/src/client_server/backup.rs
@@ -12,7 +12,6 @@
 /// # `POST /_matrix/client/r0/room_keys/version`
 ///
 /// Creates a new backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_backup_route(
     db: DatabaseGuard,
     body: Ruma<create_backup::Request>,
@@ -30,7 +29,6 @@ pub async fn create_backup_route(
 /// # `PUT /_matrix/client/r0/room_keys/version/{version}`
 ///
 /// Update information about an existing backup. Only `auth_data` can be modified.
-#[tracing::instrument(skip(db, body))]
 pub async fn update_backup_route(
     db: DatabaseGuard,
     body: Ruma<update_backup::Request<'_>>,
@@ -47,7 +45,6 @@ pub async fn update_backup_route(
 /// # `GET /_matrix/client/r0/room_keys/version`
 ///
 /// Get information about the latest backup version.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_latest_backup_route(
     db: DatabaseGuard,
     body: Ruma<get_latest_backup::Request>,
@@ -73,7 +70,6 @@ pub async fn get_latest_backup_route(
 /// # `GET /_matrix/client/r0/room_keys/version`
 ///
 /// Get information about an existing backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_backup_route(
     db: DatabaseGuard,
     body: Ruma<get_backup::Request<'_>>,
@@ -100,7 +96,6 @@ pub async fn get_backup_route(
 /// Delete an existing key backup.
 ///
 /// - Deletes both information about the backup, as well as all key data related to the backup
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_backup_route(
     db: DatabaseGuard,
     body: Ruma<delete_backup::Request<'_>>,
@@ -121,7 +116,6 @@ pub async fn delete_backup_route(
 /// - Only manipulating the most recently created version of the backup is allowed
 /// - Adds the keys to the backup
 /// - Returns the new number of keys in this backup and the etag
-#[tracing::instrument(skip(db, body))]
 pub async fn add_backup_keys_route(
     db: DatabaseGuard,
     body: Ruma<add_backup_keys::Request<'_>>,
@@ -168,7 +162,6 @@ pub async fn add_backup_keys_route(
 /// - Only manipulating the most recently created version of the backup is allowed
 /// - Adds the keys to the backup
 /// - Returns the new number of keys in this backup and the etag
-#[tracing::instrument(skip(db, body))]
 pub async fn add_backup_key_sessions_route(
     db: DatabaseGuard,
     body: Ruma<add_backup_key_sessions::Request<'_>>,
@@ -213,7 +206,6 @@ pub async fn add_backup_key_sessions_route(
 /// - Only manipulating the most recently created version of the backup is allowed
 /// - Adds the keys to the backup
 /// - Returns the new number of keys in this backup and the etag
-#[tracing::instrument(skip(db, body))]
 pub async fn add_backup_key_session_route(
     db: DatabaseGuard,
     body: Ruma<add_backup_key_session::Request<'_>>,
@@ -252,7 +244,6 @@ pub async fn add_backup_key_session_route(
 /// # `GET /_matrix/client/r0/room_keys/keys`
 ///
 /// Retrieves all keys from the backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_backup_keys_route(
     db: DatabaseGuard,
     body: Ruma<get_backup_keys::Request<'_>>,
@@ -267,7 +258,6 @@ pub async fn get_backup_keys_route(
 /// # `GET /_matrix/client/r0/room_keys/keys/{roomId}`
 ///
 /// Retrieves all keys from the backup for a given room.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_backup_key_sessions_route(
     db: DatabaseGuard,
     body: Ruma<get_backup_key_sessions::Request<'_>>,
@@ -284,7 +274,6 @@ pub async fn get_backup_key_sessions_route(
 /// # `GET /_matrix/client/r0/room_keys/keys/{roomId}/{sessionId}`
 ///
 /// Retrieves a key from the backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_backup_key_session_route(
     db: DatabaseGuard,
     body: Ruma<get_backup_key_session::Request<'_>>,
@@ -305,7 +294,6 @@ pub async fn get_backup_key_session_route(
 /// # `DELETE /_matrix/client/r0/room_keys/keys`
 ///
 /// Delete the keys from the backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_backup_keys_route(
     db: DatabaseGuard,
     body: Ruma<delete_backup_keys::Request<'_>>,
@@ -325,7 +313,6 @@ pub async fn delete_backup_keys_route(
 /// # `DELETE /_matrix/client/r0/room_keys/keys/{roomId}`
 ///
 /// Delete the keys from the backup for a given room.
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_backup_key_sessions_route(
     db: DatabaseGuard,
     body: Ruma<delete_backup_key_sessions::Request<'_>>,
@@ -346,7 +333,6 @@ pub async fn delete_backup_key_sessions_route(
 /// # `DELETE /_matrix/client/r0/room_keys/keys/{roomId}/{sessionId}`
 ///
 /// Delete a key from the backup.
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_backup_key_session_route(
     db: DatabaseGuard,
     body: Ruma<delete_backup_key_session::Request<'_>>,
diff --git a/src/client_server/capabilities.rs b/src/client_server/capabilities.rs
index 3f779dc33dae0cd822b70bf1cfc4f06dab832456..b1e072e74dd6e70c92ed152c9d27d9c338d5292b 100644
--- a/src/client_server/capabilities.rs
+++ b/src/client_server/capabilities.rs
@@ -10,7 +10,6 @@
 /// # `GET /_matrix/client/r0/capabilities`
 ///
 /// Get information on the supported feature set and other relevent capabilities of this server.
-#[tracing::instrument(skip(_body))]
 pub async fn get_capabilities_route(
     _body: Ruma<get_capabilities::Request>,
 ) -> Result<get_capabilities::Response> {
diff --git a/src/client_server/config.rs b/src/client_server/config.rs
index 14a665ebeb66660ce63feacad2216b88f6c8cdde..83bb7a598b5e887caef23d0ca78e32d7fb7ce825 100644
--- a/src/client_server/config.rs
+++ b/src/client_server/config.rs
@@ -16,7 +16,6 @@
 /// # `PUT /_matrix/client/r0/user/{userId}/account_data/{type}`
 ///
 /// Sets some account data for the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_global_account_data_route(
     db: DatabaseGuard,
     body: Ruma<set_global_account_data::Request<'_>>,
@@ -47,7 +46,6 @@ pub async fn set_global_account_data_route(
 /// # `PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}`
 ///
 /// Sets some room account data for the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_room_account_data_route(
     db: DatabaseGuard,
     body: Ruma<set_room_account_data::Request<'_>>,
@@ -78,7 +76,6 @@ pub async fn set_room_account_data_route(
 /// # `GET /_matrix/client/r0/user/{userId}/account_data/{type}`
 ///
 /// Gets some account data for the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_global_account_data_route(
     db: DatabaseGuard,
     body: Ruma<get_global_account_data::Request<'_>>,
@@ -100,7 +97,6 @@ pub async fn get_global_account_data_route(
 /// # `GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}`
 ///
 /// Gets some room account data for the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_account_data_route(
     db: DatabaseGuard,
     body: Ruma<get_room_account_data::Request<'_>>,
diff --git a/src/client_server/context.rs b/src/client_server/context.rs
index 6f3e7778d9b3a80b8e38fb2819034221c0877a60..167d0cc53c771f24330e649bc2f961bc0bb520b1 100644
--- a/src/client_server/context.rs
+++ b/src/client_server/context.rs
@@ -15,7 +15,6 @@
 ///
 /// - Only works if the user is joined (TODO: always allow, but only show events if the user was
 /// joined, depending on history_visibility)
-#[tracing::instrument(skip(db, body))]
 pub async fn get_context_route(
     db: DatabaseGuard,
     body: Ruma<get_context::Request<'_>>,
diff --git a/src/client_server/device.rs b/src/client_server/device.rs
index e35da978c7e37a4ca29bdd00166ab06cb06c0925..76172d2121353889d49f862eaa2ab089b17ea70f 100644
--- a/src/client_server/device.rs
+++ b/src/client_server/device.rs
@@ -12,7 +12,6 @@
 /// # `GET /_matrix/client/r0/devices`
 ///
 /// Get metadata on all devices of the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_devices_route(
     db: DatabaseGuard,
     body: Ruma<get_devices::Request>,
@@ -31,7 +30,6 @@ pub async fn get_devices_route(
 /// # `GET /_matrix/client/r0/devices/{deviceId}`
 ///
 /// Get metadata on a single device of the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_device_route(
     db: DatabaseGuard,
     body: Ruma<get_device::Request<'_>>,
@@ -49,7 +47,6 @@ pub async fn get_device_route(
 /// # `PUT /_matrix/client/r0/devices/{deviceId}`
 ///
 /// Updates the metadata on a given device of the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn update_device_route(
     db: DatabaseGuard,
     body: Ruma<update_device::Request<'_>>,
@@ -80,7 +77,6 @@ pub async fn update_device_route(
 /// - Deletes device metadata (device id, device display name, last seen ip, last seen ts)
 /// - Forgets to-device events
 /// - Triggers device list updates
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_device_route(
     db: DatabaseGuard,
     body: Ruma<delete_device::Request<'_>>,
@@ -139,7 +135,6 @@ pub async fn delete_device_route(
 /// - Deletes device metadata (device id, device display name, last seen ip, last seen ts)
 /// - Forgets to-device events
 /// - Triggers device list updates
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_devices_route(
     db: DatabaseGuard,
     body: Ruma<delete_devices::Request<'_>>,
diff --git a/src/client_server/directory.rs b/src/client_server/directory.rs
index 0f3ae306b6ee3a1e821756d69c72997cabf15031..75601fe73ce09a412b1992f14252c62abe31224c 100644
--- a/src/client_server/directory.rs
+++ b/src/client_server/directory.rs
@@ -34,7 +34,6 @@
 /// Lists the public rooms on this server.
 ///
 /// - Rooms are ordered by the number of joined members
-#[tracing::instrument(skip(db, body))]
 pub async fn get_public_rooms_filtered_route(
     db: DatabaseGuard,
     body: Ruma<get_public_rooms_filtered::Request<'_>>,
@@ -55,7 +54,6 @@ pub async fn get_public_rooms_filtered_route(
 /// Lists the public rooms on this server.
 ///
 /// - Rooms are ordered by the number of joined members
-#[tracing::instrument(skip(db, body))]
 pub async fn get_public_rooms_route(
     db: DatabaseGuard,
     body: Ruma<get_public_rooms::Request<'_>>,
@@ -83,7 +81,6 @@ pub async fn get_public_rooms_route(
 /// Sets the visibility of a given room in the room directory.
 ///
 /// - TODO: Access control checks
-#[tracing::instrument(skip(db, body))]
 pub async fn set_room_visibility_route(
     db: DatabaseGuard,
     body: Ruma<set_room_visibility::Request<'_>>,
@@ -112,7 +109,6 @@ pub async fn set_room_visibility_route(
 /// # `GET /_matrix/client/r0/directory/list/room/{roomId}`
 ///
 /// Gets the visibility of a given room in the room directory.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_visibility_route(
     db: DatabaseGuard,
     body: Ruma<get_room_visibility::Request<'_>>,
diff --git a/src/client_server/filter.rs b/src/client_server/filter.rs
index 28610ec08e2c0feba8e819369b8b1ac559338a9a..a606aeb4336e1b1fb290848ea7cd0eb1a3e37ba7 100644
--- a/src/client_server/filter.rs
+++ b/src/client_server/filter.rs
@@ -9,7 +9,6 @@
 /// Loads a filter that was previously created.
 ///
 /// - A user can only access their own filters
-#[tracing::instrument(skip(db, body))]
 pub async fn get_filter_route(
     db: DatabaseGuard,
     body: Ruma<get_filter::Request<'_>>,
@@ -26,7 +25,6 @@ pub async fn get_filter_route(
 /// # `PUT /_matrix/client/r0/user/{userId}/filter`
 ///
 /// Creates a new filter to be used by other endpoints.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_filter_route(
     db: DatabaseGuard,
     body: Ruma<create_filter::Request<'_>>,
diff --git a/src/client_server/keys.rs b/src/client_server/keys.rs
index d272ff410ecedb0e6dd3f031c61709a1ee56a7a9..2ea62a87b2ac72c85bf83a91c56eb3cc7fa503bc 100644
--- a/src/client_server/keys.rs
+++ b/src/client_server/keys.rs
@@ -27,7 +27,6 @@
 ///
 /// - Adds one time keys
 /// - If there are no device keys yet: Adds device keys (TODO: merge with existing keys?)
-#[tracing::instrument(skip(db, body))]
 pub async fn upload_keys_route(
     db: DatabaseGuard,
     body: Ruma<upload_keys::Request>,
@@ -72,7 +71,6 @@ pub async fn upload_keys_route(
 /// - Always fetches users from other servers over federation
 /// - Gets master keys, self-signing keys, user signing keys and device keys.
 /// - The master and self-signing keys contain signatures that the user is allowed to see
-#[tracing::instrument(skip(db, body))]
 pub async fn get_keys_route(
     db: DatabaseGuard,
     body: Ruma<get_keys::Request<'_>>,
@@ -93,7 +91,6 @@ pub async fn get_keys_route(
 /// # `POST /_matrix/client/r0/keys/claim`
 ///
 /// Claims one-time keys
-#[tracing::instrument(skip(db, body))]
 pub async fn claim_keys_route(
     db: DatabaseGuard,
     body: Ruma<claim_keys::Request>,
@@ -110,7 +107,6 @@ pub async fn claim_keys_route(
 /// Uploads end-to-end key information for the sender user.
 ///
 /// - Requires UIAA to verify password
-#[tracing::instrument(skip(db, body))]
 pub async fn upload_signing_keys_route(
     db: DatabaseGuard,
     body: Ruma<upload_signing_keys::Request<'_>>,
@@ -170,7 +166,6 @@ pub async fn upload_signing_keys_route(
 /// # `POST /_matrix/client/r0/keys/signatures/upload`
 ///
 /// Uploads end-to-end key signatures from the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn upload_signatures_route(
     db: DatabaseGuard,
     body: Ruma<upload_signatures::Request>,
@@ -232,7 +227,6 @@ pub async fn upload_signatures_route(
 /// Gets a list of users who have updated their device identity keys since the previous sync token.
 ///
 /// - TODO: left users
-#[tracing::instrument(skip(db, body))]
 pub async fn get_key_changes_route(
     db: DatabaseGuard,
     body: Ruma<get_key_changes::Request<'_>>,
diff --git a/src/client_server/media.rs b/src/client_server/media.rs
index 615f7602475d7b2d929c7a1f1d1400ea4171d333..dcdea05a3fa91edb54bb40f366b11614d63d81f6 100644
--- a/src/client_server/media.rs
+++ b/src/client_server/media.rs
@@ -15,7 +15,6 @@
 /// # `GET /_matrix/media/r0/config`
 ///
 /// Returns max upload size.
-#[tracing::instrument(skip(db, _body))]
 pub async fn get_media_config_route(
     db: DatabaseGuard,
     _body: Ruma<get_media_config::Request>,
@@ -31,7 +30,6 @@ pub async fn get_media_config_route(
 ///
 /// - Some metadata will be saved in the database
 /// - Media will be saved in the media/ directory
-#[tracing::instrument(skip(db, body))]
 pub async fn create_content_route(
     db: DatabaseGuard,
     body: Ruma<create_content::Request<'_>>,
@@ -101,7 +99,6 @@ pub async fn get_remote_content(
 /// Load media from our server or over federation.
 ///
 /// - Only allows federation if `allow_remote` is true
-#[tracing::instrument(skip(db, body))]
 pub async fn get_content_route(
     db: DatabaseGuard,
     body: Ruma<get_content::Request<'_>>,
@@ -133,7 +130,6 @@ pub async fn get_content_route(
 /// Load media from our server or over federation, permitting desired filename.
 ///
 /// - Only allows federation if `allow_remote` is true
-#[tracing::instrument(skip(db, body))]
 pub async fn get_content_as_filename_route(
     db: DatabaseGuard,
     body: Ruma<get_content_as_filename::Request<'_>>,
@@ -170,7 +166,6 @@ pub async fn get_content_as_filename_route(
 /// Load media thumbnail from our server or over federation.
 ///
 /// - Only allows federation if `allow_remote` is true
-#[tracing::instrument(skip(db, body))]
 pub async fn get_content_thumbnail_route(
     db: DatabaseGuard,
     body: Ruma<get_content_thumbnail::Request<'_>>,
diff --git a/src/client_server/membership.rs b/src/client_server/membership.rs
index efdf7746537c6741ff403ad463cd69ae8fbb000e..447f829e9cb0b81b22c8ad41cb4862fef2f41662 100644
--- a/src/client_server/membership.rs
+++ b/src/client_server/membership.rs
@@ -42,7 +42,6 @@
 ///
 /// - If the server knowns about this room: creates the join event and does auth rules locally
 /// - If the server does not know about the room: asks other servers over federation
-#[tracing::instrument(skip(db, body))]
 pub async fn join_room_by_id_route(
     db: DatabaseGuard,
     body: Ruma<join_room_by_id::Request<'_>>,
@@ -83,7 +82,6 @@ pub async fn join_room_by_id_route(
 ///
 /// - If the server knowns about this room: creates the join event and does auth rules locally
 /// - If the server does not know about the room: asks other servers over federation
-#[tracing::instrument(skip(db, body))]
 pub async fn join_room_by_id_or_alias_route(
     db: DatabaseGuard,
     body: Ruma<join_room_by_id_or_alias::Request<'_>>,
@@ -136,7 +134,6 @@ pub async fn join_room_by_id_or_alias_route(
 /// Tries to leave the sender user from a room.
 ///
 /// - This should always work if the user is currently joined.
-#[tracing::instrument(skip(db, body))]
 pub async fn leave_room_route(
     db: DatabaseGuard,
     body: Ruma<leave_room::Request<'_>>,
@@ -153,7 +150,6 @@ pub async fn leave_room_route(
 /// # `POST /_matrix/client/r0/rooms/{roomId}/invite`
 ///
 /// Tries to send an invite event into the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn invite_user_route(
     db: DatabaseGuard,
     body: Ruma<invite_user::Request<'_>>,
@@ -172,7 +168,6 @@ pub async fn invite_user_route(
 /// # `POST /_matrix/client/r0/rooms/{roomId}/kick`
 ///
 /// Tries to send a kick event into the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn kick_user_route(
     db: DatabaseGuard,
     body: Ruma<kick_user::Request<'_>>,
@@ -232,7 +227,6 @@ pub async fn kick_user_route(
 /// # `POST /_matrix/client/r0/rooms/{roomId}/ban`
 ///
 /// Tries to send a ban event into the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn ban_user_route(
     db: DatabaseGuard,
     body: Ruma<ban_user::Request<'_>>,
@@ -303,7 +297,6 @@ pub async fn ban_user_route(
 /// # `POST /_matrix/client/r0/rooms/{roomId}/unban`
 ///
 /// Tries to send an unban event into the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn unban_user_route(
     db: DatabaseGuard,
     body: Ruma<unban_user::Request<'_>>,
@@ -367,7 +360,6 @@ pub async fn unban_user_route(
 ///
 /// Note: Other devices of the user have no way of knowing the room was forgotten, so this has to
 /// be called from every device
-#[tracing::instrument(skip(db, body))]
 pub async fn forget_room_route(
     db: DatabaseGuard,
     body: Ruma<forget_room::Request<'_>>,
@@ -384,7 +376,6 @@ pub async fn forget_room_route(
 /// # `POST /_matrix/client/r0/joined_rooms`
 ///
 /// Lists all rooms the user has joined.
-#[tracing::instrument(skip(db, body))]
 pub async fn joined_rooms_route(
     db: DatabaseGuard,
     body: Ruma<joined_rooms::Request>,
@@ -405,7 +396,6 @@ pub async fn joined_rooms_route(
 /// Lists all joined users in a room (TODO: at a specific point in time, with a specific membership).
 ///
 /// - Only works if the user is currently joined
-#[tracing::instrument(skip(db, body))]
 pub async fn get_member_events_route(
     db: DatabaseGuard,
     body: Ruma<get_member_events::Request<'_>>,
@@ -437,7 +427,6 @@ pub async fn get_member_events_route(
 ///
 /// - The sender user must be in the room
 /// - TODO: An appservice just needs a puppet joined
-#[tracing::instrument(skip(db, body))]
 pub async fn joined_members_route(
     db: DatabaseGuard,
     body: Ruma<joined_members::Request<'_>>,
diff --git a/src/client_server/message.rs b/src/client_server/message.rs
index c5982de1ca4c9f0cd54517199502dde6fad1e689..93d5b3bbb5e8c14a1af7eb033545dcdaa232b056 100644
--- a/src/client_server/message.rs
+++ b/src/client_server/message.rs
@@ -18,7 +18,6 @@
 /// - Is a NOOP if the txn id was already used before and returns the same event id again
 /// - The only requirement for the content is that it has to be valid json
 /// - Tries to send the event into the room, auth rules will determine if it is allowed
-#[tracing::instrument(skip(db, body))]
 pub async fn send_message_event_route(
     db: DatabaseGuard,
     body: Ruma<send_message_event::Request<'_>>,
@@ -103,7 +102,6 @@ pub async fn send_message_event_route(
 ///
 /// - Only works if the user is joined (TODO: always allow, but only show events where the user was
 /// joined, depending on history_visibility)
-#[tracing::instrument(skip(db, body))]
 pub async fn get_message_events_route(
     db: DatabaseGuard,
     body: Ruma<get_message_events::Request<'_>>,
diff --git a/src/client_server/presence.rs b/src/client_server/presence.rs
index aedff555dba382a207863da746f0f10f4ce08625..7549b1a795ff6a14c0cc1f09ca291681053d7ec6 100644
--- a/src/client_server/presence.rs
+++ b/src/client_server/presence.rs
@@ -5,7 +5,6 @@
 /// # `PUT /_matrix/client/r0/presence/{userId}/status`
 ///
 /// Sets the presence state of the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_presence_route(
     db: DatabaseGuard,
     body: Ruma<set_presence::Request<'_>>,
@@ -47,7 +46,6 @@ pub async fn set_presence_route(
 /// Gets the presence state of the given user.
 ///
 /// - Only works if you share a room with the user
-#[tracing::instrument(skip(db, body))]
 pub async fn get_presence_route(
     db: DatabaseGuard,
     body: Ruma<get_presence::Request<'_>>,
diff --git a/src/client_server/profile.rs b/src/client_server/profile.rs
index f520d2cb53e2c819300dac2e0e2fbdc36291db70..33bfbb5c986ffcdab76fe3b8e3f34806c3d19c42 100644
--- a/src/client_server/profile.rs
+++ b/src/client_server/profile.rs
@@ -19,7 +19,6 @@
 /// Updates the displayname.
 ///
 /// - Also makes sure other users receive the update using presence EDUs
-#[tracing::instrument(skip(db, body))]
 pub async fn set_displayname_route(
     db: DatabaseGuard,
     body: Ruma<set_display_name::Request<'_>>,
@@ -117,7 +116,6 @@ pub async fn set_displayname_route(
 /// Returns the displayname of the user.
 ///
 /// - If user is on another server: Fetches displayname over federation
-#[tracing::instrument(skip(db, body))]
 pub async fn get_displayname_route(
     db: DatabaseGuard,
     body: Ruma<get_display_name::Request<'_>>,
@@ -150,7 +148,6 @@ pub async fn get_displayname_route(
 /// Updates the avatar_url and blurhash.
 ///
 /// - Also makes sure other users receive the update using presence EDUs
-#[tracing::instrument(skip(db, body))]
 pub async fn set_avatar_url_route(
     db: DatabaseGuard,
     body: Ruma<set_avatar_url::Request<'_>>,
@@ -250,7 +247,6 @@ pub async fn set_avatar_url_route(
 /// Returns the avatar_url and blurhash of the user.
 ///
 /// - If user is on another server: Fetches avatar_url and blurhash over federation
-#[tracing::instrument(skip(db, body))]
 pub async fn get_avatar_url_route(
     db: DatabaseGuard,
     body: Ruma<get_avatar_url::Request<'_>>,
@@ -285,7 +281,6 @@ pub async fn get_avatar_url_route(
 /// Returns the displayname, avatar_url and blurhash of the user.
 ///
 /// - If user is on another server: Fetches profile over federation
-#[tracing::instrument(skip(db, body))]
 pub async fn get_profile_route(
     db: DatabaseGuard,
     body: Ruma<get_profile::Request<'_>>,
diff --git a/src/client_server/push.rs b/src/client_server/push.rs
index 3bc46b85472fa7cad4683b1a440f621b03ce7bfc..67b70d282f2273f99452e39bb96b1074470ca796 100644
--- a/src/client_server/push.rs
+++ b/src/client_server/push.rs
@@ -15,7 +15,6 @@
 /// # `GET /_matrix/client/r0/pushrules`
 ///
 /// Retrieves the push rules event for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_pushrules_all_route(
     db: DatabaseGuard,
     body: Ruma<get_pushrules_all::Request>,
@@ -38,7 +37,6 @@ pub async fn get_pushrules_all_route(
 /// # `GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}`
 ///
 /// Retrieves a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_pushrule_route(
     db: DatabaseGuard,
     body: Ruma<get_pushrule::Request<'_>>,
@@ -91,7 +89,6 @@ pub async fn get_pushrule_route(
 /// # `PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}`
 ///
 /// Creates a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_pushrule_route(
     db: DatabaseGuard,
     body: Ruma<set_pushrule::Request<'_>>,
@@ -188,7 +185,6 @@ pub async fn set_pushrule_route(
 /// # `GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions`
 ///
 /// Gets the actions of a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_pushrule_actions_route(
     db: DatabaseGuard,
     body: Ruma<get_pushrule_actions::Request<'_>>,
@@ -245,7 +241,6 @@ pub async fn get_pushrule_actions_route(
 /// # `PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions`
 ///
 /// Sets the actions of a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_pushrule_actions_route(
     db: DatabaseGuard,
     body: Ruma<set_pushrule_actions::Request<'_>>,
@@ -313,7 +308,6 @@ pub async fn set_pushrule_actions_route(
 /// # `GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled`
 ///
 /// Gets the enabled status of a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_pushrule_enabled_route(
     db: DatabaseGuard,
     body: Ruma<get_pushrule_enabled::Request<'_>>,
@@ -373,7 +367,6 @@ pub async fn get_pushrule_enabled_route(
 /// # `PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled`
 ///
 /// Sets the enabled status of a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn set_pushrule_enabled_route(
     db: DatabaseGuard,
     body: Ruma<set_pushrule_enabled::Request<'_>>,
@@ -446,7 +439,6 @@ pub async fn set_pushrule_enabled_route(
 /// # `DELETE /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}`
 ///
 /// Deletes a single specified push rule for this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_pushrule_route(
     db: DatabaseGuard,
     body: Ruma<delete_pushrule::Request<'_>>,
@@ -509,7 +501,6 @@ pub async fn delete_pushrule_route(
 /// # `GET /_matrix/client/r0/pushers`
 ///
 /// Gets all currently active pushers for the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_pushers_route(
     db: DatabaseGuard,
     body: Ruma<get_pushers::Request>,
@@ -526,7 +517,6 @@ pub async fn get_pushers_route(
 /// Adds a pusher for the sender user.
 ///
 /// - TODO: Handle `append`
-#[tracing::instrument(skip(db, body))]
 pub async fn set_pushers_route(
     db: DatabaseGuard,
     body: Ruma<set_pusher::Request>,
diff --git a/src/client_server/read_marker.rs b/src/client_server/read_marker.rs
index fa2627b11188bf1e726c947a47d3fcadac192583..cc6928d1226977b4d571ca549d0ee5eb64bc2507 100644
--- a/src/client_server/read_marker.rs
+++ b/src/client_server/read_marker.rs
@@ -16,7 +16,6 @@
 ///
 /// - Updates fully-read account data event to `fully_read`
 /// - If `read_receipt` is set: Update private marker and public read receipt EDU
-#[tracing::instrument(skip(db, body))]
 pub async fn set_read_marker_route(
     db: DatabaseGuard,
     body: Ruma<set_read_marker::Request<'_>>,
@@ -82,7 +81,6 @@ pub async fn set_read_marker_route(
 /// # `POST /_matrix/client/r0/rooms/{roomId}/receipt/{receiptType}/{eventId}`
 ///
 /// Sets private read marker and public read receipt EDU.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_receipt_route(
     db: DatabaseGuard,
     body: Ruma<create_receipt::Request<'_>>,
diff --git a/src/client_server/redact.rs b/src/client_server/redact.rs
index 0a343e57892533b5aeda4abd6988f9cd1d08c8ee..1e05bfe2a6a6e109308216d7454d0550865ebdcf 100644
--- a/src/client_server/redact.rs
+++ b/src/client_server/redact.rs
@@ -13,7 +13,6 @@
 /// Tries to send a redaction event into the room.
 ///
 /// - TODO: Handle txn id
-#[tracing::instrument(skip(db, body))]
 pub async fn redact_event_route(
     db: DatabaseGuard,
     body: Ruma<redact_event::Request<'_>>,
diff --git a/src/client_server/report.rs b/src/client_server/report.rs
index 680ad5a5844313dcd489b1b3caaa233017f1cc21..6274172c0cd284f0285c11f2874c5b38c618611e 100644
--- a/src/client_server/report.rs
+++ b/src/client_server/report.rs
@@ -9,7 +9,6 @@
 ///
 /// Reports an inappropriate event to homeserver admins
 ///
-#[tracing::instrument(skip(db, body))]
 pub async fn report_event_route(
     db: DatabaseGuard,
     body: Ruma<report_content::Request<'_>>,
diff --git a/src/client_server/room.rs b/src/client_server/room.rs
index 4640cdabdb10d4ea9d3dc65ff42332ba80703acd..54559e26783704693bb0ed666761d18a36e36388 100644
--- a/src/client_server/room.rs
+++ b/src/client_server/room.rs
@@ -45,7 +45,6 @@
 /// - Send events listed in initial state
 /// - Send events implied by `name` and `topic`
 /// - Send invite events
-#[tracing::instrument(skip(db, body))]
 pub async fn create_room_route(
     db: DatabaseGuard,
     body: Ruma<create_room::Request<'_>>,
@@ -417,7 +416,6 @@ pub async fn create_room_route(
 /// Gets a single event.
 ///
 /// - You have to currently be joined to the room (TODO: Respect history visibility)
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_event_route(
     db: DatabaseGuard,
     body: Ruma<get_room_event::Request<'_>>,
@@ -445,7 +443,6 @@ pub async fn get_room_event_route(
 /// Lists all aliases of the room.
 ///
 /// - Only users joined to the room are allowed to call this TODO: Allow any user to call it if history_visibility is world readable
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_aliases_route(
     db: DatabaseGuard,
     body: Ruma<aliases::Request<'_>>,
@@ -478,7 +475,6 @@ pub async fn get_room_aliases_route(
 /// - Transfers some state events
 /// - Moves local aliases
 /// - Modifies old room power levels to prevent users from speaking
-#[tracing::instrument(skip(db, body))]
 pub async fn upgrade_room_route(
     db: DatabaseGuard,
     body: Ruma<upgrade_room::Request<'_>>,
diff --git a/src/client_server/search.rs b/src/client_server/search.rs
index 067eddce66f99d7560888cfd862435d35516692e..5860484e366dcc9136dbf012d8c530393bf3da97 100644
--- a/src/client_server/search.rs
+++ b/src/client_server/search.rs
@@ -9,7 +9,6 @@
 /// Searches rooms for messages.
 ///
 /// - Only works if the user is currently joined to the room (TODO: Respect history visibility)
-#[tracing::instrument(skip(db, body))]
 pub async fn search_events_route(
     db: DatabaseGuard,
     body: Ruma<search_events::Request<'_>>,
diff --git a/src/client_server/session.rs b/src/client_server/session.rs
index dbcd28cb9ed9ba1ae9077b187806c8937b542777..c2259c26a894dc8f2c2e9351836b37b58e1ab489 100644
--- a/src/client_server/session.rs
+++ b/src/client_server/session.rs
@@ -23,7 +23,6 @@ struct Claims {
 ///
 /// Get the supported login types of this server. One of these should be used as the `type` field
 /// when logging in.
-#[tracing::instrument(skip(_body))]
 pub async fn get_login_types_route(
     _body: Ruma<get_login_types::Request>,
 ) -> Result<get_login_types::Response> {
@@ -43,7 +42,6 @@ pub async fn get_login_types_route(
 ///
 /// Note: You can use [`GET /_matrix/client/r0/login`](fn.get_supported_versions_route.html) to see
 /// supported login types.
-#[tracing::instrument(skip(db, body))]
 pub async fn login_route(
     db: DatabaseGuard,
     body: Ruma<login::Request<'_>>,
@@ -163,7 +161,6 @@ pub async fn login_route(
 /// - Deletes device metadata (device id, device display name, last seen ip, last seen ts)
 /// - Forgets to-device events
 /// - Triggers device list updates
-#[tracing::instrument(skip(db, body))]
 pub async fn logout_route(
     db: DatabaseGuard,
     body: Ruma<logout::Request>,
@@ -189,7 +186,6 @@ pub async fn logout_route(
 ///
 /// Note: This is equivalent to calling [`GET /_matrix/client/r0/logout`](fn.logout_route.html)
 /// from each device of this user.
-#[tracing::instrument(skip(db, body))]
 pub async fn logout_all_route(
     db: DatabaseGuard,
     body: Ruma<logout_all::Request>,
diff --git a/src/client_server/state.rs b/src/client_server/state.rs
index acc362fa30250d55a570d9d0d3d8dd1213c49088..e334e7dee0220ba023fb326b6419ea43d813c31b 100644
--- a/src/client_server/state.rs
+++ b/src/client_server/state.rs
@@ -26,7 +26,6 @@
 /// - The only requirement for the content is that it has to be valid json
 /// - Tries to send the event into the room, auth rules will determine if it is allowed
 /// - If event is new canonical_alias: Rejects if alias is incorrect
-#[tracing::instrument(skip(db, body))]
 pub async fn send_state_event_for_key_route(
     db: DatabaseGuard,
     body: Ruma<send_state_event::Request<'_>>,
@@ -56,7 +55,6 @@ pub async fn send_state_event_for_key_route(
 /// - The only requirement for the content is that it has to be valid json
 /// - Tries to send the event into the room, auth rules will determine if it is allowed
 /// - If event is new canonical_alias: Rejects if alias is incorrect
-#[tracing::instrument(skip(db, body))]
 pub async fn send_state_event_for_empty_key_route(
     db: DatabaseGuard,
     body: Ruma<send_state_event::Request<'_>>,
@@ -92,7 +90,6 @@ pub async fn send_state_event_for_empty_key_route(
 /// Get all state events for a room.
 ///
 /// - If not joined: Only works if current room history visibility is world readable
-#[tracing::instrument(skip(db, body))]
 pub async fn get_state_events_route(
     db: DatabaseGuard,
     body: Ruma<get_state_events::Request<'_>>,
@@ -139,7 +136,6 @@ pub async fn get_state_events_route(
 /// Get single state event of a room.
 ///
 /// - If not joined: Only works if current room history visibility is world readable
-#[tracing::instrument(skip(db, body))]
 pub async fn get_state_events_for_key_route(
     db: DatabaseGuard,
     body: Ruma<get_state_events_for_key::Request<'_>>,
@@ -190,7 +186,6 @@ pub async fn get_state_events_for_key_route(
 /// Get single state event of a room.
 ///
 /// - If not joined: Only works if current room history visibility is world readable
-#[tracing::instrument(skip(db, body))]
 pub async fn get_state_events_for_empty_key_route(
     db: DatabaseGuard,
     body: Ruma<get_state_events_for_key::Request<'_>>,
diff --git a/src/client_server/sync.rs b/src/client_server/sync.rs
index 6410ce5d08c3666d33a8c51c6889a9d964b6aaae..360f015a8b2fd60febcc7becd47c501691f7729a 100644
--- a/src/client_server/sync.rs
+++ b/src/client_server/sync.rs
@@ -54,7 +54,6 @@
 ///
 /// - Sync is handled in an async task, multiple requests from the same device with the same
 /// `since` will be cached
-#[tracing::instrument(skip(db, body))]
 pub async fn sync_events_route(
     db: DatabaseGuard,
     body: Ruma<sync_events::Request<'_>>,
diff --git a/src/client_server/tag.rs b/src/client_server/tag.rs
index edf86903514d05d2e357bee212217d7e065ac432..29bd9a0ba18ca1017c233defd8c45faa65b614d8 100644
--- a/src/client_server/tag.rs
+++ b/src/client_server/tag.rs
@@ -13,7 +13,6 @@
 /// Adds a tag to the room.
 ///
 /// - Inserts the tag into the tag event of the room account data.
-#[tracing::instrument(skip(db, body))]
 pub async fn update_tag_route(
     db: DatabaseGuard,
     body: Ruma<create_tag::Request<'_>>,
@@ -51,7 +50,6 @@ pub async fn update_tag_route(
 /// Deletes a tag from the room.
 ///
 /// - Removes the tag from the tag event of the room account data.
-#[tracing::instrument(skip(db, body))]
 pub async fn delete_tag_route(
     db: DatabaseGuard,
     body: Ruma<delete_tag::Request<'_>>,
@@ -86,7 +84,6 @@ pub async fn delete_tag_route(
 /// Returns tags on the room.
 ///
 /// - Gets the tag event of the room account data.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_tags_route(
     db: DatabaseGuard,
     body: Ruma<get_tags::Request<'_>>,
diff --git a/src/client_server/thirdparty.rs b/src/client_server/thirdparty.rs
index 929503ed86373b9d5bf39172c693ba502c50a7bf..524f3bad6b4e9df7b1b4522dd86c71106481dd2e 100644
--- a/src/client_server/thirdparty.rs
+++ b/src/client_server/thirdparty.rs
@@ -6,7 +6,6 @@
 /// # `GET /_matrix/client/r0/thirdparty/protocols`
 ///
 /// TODO: Fetches all metadata about protocols supported by the homeserver.
-#[tracing::instrument(skip(_body))]
 pub async fn get_protocols_route(
     _body: Ruma<get_protocols::Request>,
 ) -> Result<get_protocols::Response> {
diff --git a/src/client_server/to_device.rs b/src/client_server/to_device.rs
index 9f67bf00a0903080c5ec405319a275233b78772d..e57998f64aa8c2e40737b0ac6d42735929412807 100644
--- a/src/client_server/to_device.rs
+++ b/src/client_server/to_device.rs
@@ -13,7 +13,6 @@
 /// # `PUT /_matrix/client/r0/sendToDevice/{eventType}/{txnId}`
 ///
 /// Send a to-device event to a set of client devices.
-#[tracing::instrument(skip(db, body))]
 pub async fn send_event_to_device_route(
     db: DatabaseGuard,
     body: Ruma<send_event_to_device::Request<'_>>,
diff --git a/src/client_server/typing.rs b/src/client_server/typing.rs
index 6c1939a7303ffdb7bec742b209fca75c7f1eb800..bbc852d2b4b4a959b3031e9830b5592cff878b6f 100644
--- a/src/client_server/typing.rs
+++ b/src/client_server/typing.rs
@@ -5,7 +5,6 @@
 /// # `PUT /_matrix/client/r0/rooms/{roomId}/typing/{userId}`
 ///
 /// Sets the typing state of the sender user.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_typing_event_route(
     db: DatabaseGuard,
     body: Ruma<create_typing_event::Request<'_>>,
diff --git a/src/client_server/unversioned.rs b/src/client_server/unversioned.rs
index 65becda64ba745d565ef149cd5844abd45ef7f99..168f172af5cdffcf252ec33f87da9130e8e579c8 100644
--- a/src/client_server/unversioned.rs
+++ b/src/client_server/unversioned.rs
@@ -13,7 +13,6 @@
 ///
 /// Note: Unstable features are used while developing new features. Clients should avoid using
 /// unstable features in their stable releases
-#[tracing::instrument(skip(_body))]
 pub async fn get_supported_versions_route(
     _body: Ruma<get_supported_versions::Request>,
 ) -> Result<get_supported_versions::Response> {
diff --git a/src/client_server/user_directory.rs b/src/client_server/user_directory.rs
index a3df5839b3c0cd25ffacba92f99fa731cac96f3a..cecba7f2d88954601ea8e9ac8c6cfb8bdff3e143 100644
--- a/src/client_server/user_directory.rs
+++ b/src/client_server/user_directory.rs
@@ -6,7 +6,6 @@
 /// Searches all known users for a match.
 ///
 /// - TODO: Hide users that are not in any public rooms?
-#[tracing::instrument(skip(db, body))]
 pub async fn search_users_route(
     db: DatabaseGuard,
     body: Ruma<search_users::Request<'_>>,
diff --git a/src/client_server/voip.rs b/src/client_server/voip.rs
index f3262abfa8ab1dcbfd84abe34e2c13cdf3e5e59b..e9a553a9c76dd790522902e4665fcae6102ce7fd 100644
--- a/src/client_server/voip.rs
+++ b/src/client_server/voip.rs
@@ -9,7 +9,6 @@
 /// # `GET /_matrix/client/r0/voip/turnServer`
 ///
 /// TODO: Returns information about the recommended turn server.
-#[tracing::instrument(skip(body, db))]
 pub async fn turn_server_route(
     db: DatabaseGuard,
     body: Ruma<get_turn_server_info::Request>,
diff --git a/src/server_server.rs b/src/server_server.rs
index 42e44c6c10eb19ccfaac39a1e6ac6092cd3a50ea..5c00aab2610444b349b93148562ca998d4dbcee2 100644
--- a/src/server_server.rs
+++ b/src/server_server.rs
@@ -301,7 +301,6 @@ pub(crate) async fn send_request<T: OutgoingRequest>(
     }
 }
 
-#[tracing::instrument]
 fn get_ip_with_port(destination_str: &str) -> Option<FedDest> {
     if let Ok(destination) = destination_str.parse::<SocketAddr>() {
         Some(FedDest::Literal(destination))
@@ -312,7 +311,6 @@ fn get_ip_with_port(destination_str: &str) -> Option<FedDest> {
     }
 }
 
-#[tracing::instrument]
 fn add_port_to_hostname(destination_str: &str) -> FedDest {
     let (host, port) = match destination_str.find(':') {
         None => (destination_str, ":8448"),
@@ -490,7 +488,6 @@ async fn request_well_known(
 /// # `GET /_matrix/federation/v1/version`
 ///
 /// Get version information on this server.
-#[tracing::instrument(skip(db, _body))]
 pub async fn get_server_version_route(
     db: DatabaseGuard,
     _body: Ruma<get_server_version::v1::Request>,
@@ -514,7 +511,6 @@ pub async fn get_server_version_route(
 /// - Matrix does not support invalidating public keys, so the key returned by this will be valid
 /// forever.
 // Response type for this endpoint is Json because we need to calculate a signature for the response
-#[tracing::instrument(skip(db))]
 pub async fn get_server_keys_route(db: DatabaseGuard) -> Result<impl IntoResponse> {
     if !db.globals.allow_federation() {
         return Err(Error::bad_config("Federation is disabled."));
@@ -564,7 +560,6 @@ pub async fn get_server_keys_route(db: DatabaseGuard) -> Result<impl IntoRespons
 ///
 /// - Matrix does not support invalidating public keys, so the key returned by this will be valid
 /// forever.
-#[tracing::instrument(skip(db))]
 pub async fn get_server_keys_deprecated_route(db: DatabaseGuard) -> impl IntoResponse {
     get_server_keys_route(db).await
 }
@@ -572,7 +567,6 @@ pub async fn get_server_keys_deprecated_route(db: DatabaseGuard) -> impl IntoRes
 /// # `POST /_matrix/federation/v1/publicRooms`
 ///
 /// Lists the public rooms on this server.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_public_rooms_filtered_route(
     db: DatabaseGuard,
     body: Ruma<get_public_rooms_filtered::v1::Request<'_>>,
@@ -613,7 +607,6 @@ pub async fn get_public_rooms_filtered_route(
 /// # `GET /_matrix/federation/v1/publicRooms`
 ///
 /// Lists the public rooms on this server.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_public_rooms_route(
     db: DatabaseGuard,
     body: Ruma<get_public_rooms::v1::Request<'_>>,
@@ -654,7 +647,6 @@ pub async fn get_public_rooms_route(
 /// # `PUT /_matrix/federation/v1/send/{txnId}`
 ///
 /// Push EDUs and PDUs to this server.
-#[tracing::instrument(skip(db, body))]
 pub async fn send_transaction_message_route(
     db: DatabaseGuard,
     body: Ruma<send_transaction_message::v1::Request<'_>>,
@@ -1075,7 +1067,7 @@ pub(crate) async fn handle_incoming_pdu<'a>(
     .await
 }
 
-#[tracing::instrument(skip(origin, create_event, event_id, room_id, value, db, pub_key_map))]
+#[tracing::instrument(skip_all)]
 fn handle_outlier_pdu<'a>(
     origin: &'a ServerName,
     create_event: &'a PduEvent,
@@ -1237,7 +1229,7 @@ fn handle_outlier_pdu<'a>(
     })
 }
 
-#[tracing::instrument(skip(incoming_pdu, val, create_event, origin, db, room_id, pub_key_map))]
+#[tracing::instrument(skip_all)]
 async fn upgrade_outlier_to_timeline_pdu(
     incoming_pdu: Arc<PduEvent>,
     val: BTreeMap<String, CanonicalJsonValue>,
@@ -1780,7 +1772,7 @@ async fn upgrade_outlier_to_timeline_pdu(
 /// b. Look at outlier pdu tree
 /// c. Ask origin server over federation
 /// d. TODO: Ask other servers over federation?
-#[tracing::instrument(skip(db, origin, events, create_event, room_id, pub_key_map))]
+#[tracing::instrument(skip_all)]
 pub(crate) fn fetch_and_handle_outliers<'a>(
     db: &'a Database,
     origin: &'a ServerName,
@@ -1921,7 +1913,7 @@ pub(crate) fn fetch_and_handle_outliers<'a>(
 
 /// Search the DB for the signing keys of the given server, if we don't have them
 /// fetch them from the server and save to our DB.
-#[tracing::instrument(skip(db, origin, signature_ids))]
+#[tracing::instrument(skip_all)]
 pub(crate) async fn fetch_signing_keys(
     db: &Database,
     origin: &ServerName,
@@ -2080,7 +2072,7 @@ pub(crate) async fn fetch_signing_keys(
 
 /// Append the incoming event setting the state snapshot to the state from the
 /// server that sent the event.
-#[tracing::instrument(skip(db, pdu, pdu_json, new_room_leaves, state_ids_compressed, _mutex_lock))]
+#[tracing::instrument(skip_all)]
 fn append_incoming_pdu<'a>(
     db: &Database,
     pdu: &PduEvent,
@@ -2284,7 +2276,6 @@ fn get_auth_chain_inner(
 /// Retrieves a single event from the server.
 ///
 /// - Only works if a user of this server is currently invited or joined the room
-#[tracing::instrument(skip(db, body))]
 pub async fn get_event_route(
     db: DatabaseGuard,
     body: Ruma<get_event::v1::Request<'_>>,
@@ -2328,7 +2319,6 @@ pub async fn get_event_route(
 /// # `POST /_matrix/federation/v1/get_missing_events/{roomId}`
 ///
 /// Retrieves events that the sender is missing.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_missing_events_route(
     db: DatabaseGuard,
     body: Ruma<get_missing_events::v1::Request<'_>>,
@@ -2402,7 +2392,6 @@ pub async fn get_missing_events_route(
 /// Retrieves the auth chain for a given event.
 ///
 /// - This does not include the event itself
-#[tracing::instrument(skip(db, body))]
 pub async fn get_event_authorization_route(
     db: DatabaseGuard,
     body: Ruma<get_event_authorization::v1::Request<'_>>,
@@ -2451,7 +2440,6 @@ pub async fn get_event_authorization_route(
 /// # `GET /_matrix/federation/v1/state/{roomId}`
 ///
 /// Retrieves the current state of the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_state_route(
     db: DatabaseGuard,
     body: Ruma<get_room_state::v1::Request<'_>>,
@@ -2511,7 +2499,6 @@ pub async fn get_room_state_route(
 /// # `GET /_matrix/federation/v1/state_ids/{roomId}`
 ///
 /// Retrieves the current state of the room.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_state_ids_route(
     db: DatabaseGuard,
     body: Ruma<get_room_state_ids::v1::Request<'_>>,
@@ -2560,7 +2547,6 @@ pub async fn get_room_state_ids_route(
 /// # `GET /_matrix/federation/v1/make_join/{roomId}/{userId}`
 ///
 /// Creates a join template.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_join_event_template_route(
     db: DatabaseGuard,
     body: Ruma<create_join_event_template::v1::Request<'_>>,
@@ -2841,7 +2827,6 @@ async fn create_join_event(
 /// # `PUT /_matrix/federation/v1/send_join/{roomId}/{eventId}`
 ///
 /// Submits a signed join event.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_join_event_v1_route(
     db: DatabaseGuard,
     body: Ruma<create_join_event::v1::Request<'_>>,
@@ -2859,7 +2844,6 @@ pub async fn create_join_event_v1_route(
 /// # `PUT /_matrix/federation/v2/send_join/{roomId}/{eventId}`
 ///
 /// Submits a signed join event.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_join_event_v2_route(
     db: DatabaseGuard,
     body: Ruma<create_join_event::v2::Request<'_>>,
@@ -2877,7 +2861,6 @@ pub async fn create_join_event_v2_route(
 /// # `PUT /_matrix/federation/v2/invite/{roomId}/{eventId}`
 ///
 /// Invites a remote user to a room.
-#[tracing::instrument(skip(db, body))]
 pub async fn create_invite_route(
     db: DatabaseGuard,
     body: Ruma<create_invite::v2::Request<'_>>,
@@ -2988,7 +2971,6 @@ pub async fn create_invite_route(
 /// # `GET /_matrix/federation/v1/user/devices/{userId}`
 ///
 /// Gets information on all devices of the user.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_devices_route(
     db: DatabaseGuard,
     body: Ruma<get_devices::v1::Request<'_>>,
@@ -3026,7 +3008,6 @@ pub async fn get_devices_route(
 /// # `GET /_matrix/federation/v1/query/directory`
 ///
 /// Resolve a room alias to a room id.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_room_information_route(
     db: DatabaseGuard,
     body: Ruma<get_room_information::v1::Request<'_>>,
@@ -3052,7 +3033,6 @@ pub async fn get_room_information_route(
 /// # `GET /_matrix/federation/v1/query/profile`
 ///
 /// Gets information on a profile.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_profile_information_route(
     db: DatabaseGuard,
     body: Ruma<get_profile_information::v1::Request<'_>>,
@@ -3090,7 +3070,6 @@ pub async fn get_profile_information_route(
 /// # `POST /_matrix/federation/v1/user/keys/query`
 ///
 /// Gets devices and identity keys for the given users.
-#[tracing::instrument(skip(db, body))]
 pub async fn get_keys_route(
     db: DatabaseGuard,
     body: Ruma<get_keys::v1::Request>,
@@ -3119,7 +3098,6 @@ pub async fn get_keys_route(
 /// # `POST /_matrix/federation/v1/user/keys/claim`
 ///
 /// Claims one-time keys.
-#[tracing::instrument(skip(db, body))]
 pub async fn claim_keys_route(
     db: DatabaseGuard,
     body: Ruma<claim_keys::v1::Request>,
@@ -3137,7 +3115,7 @@ pub async fn claim_keys_route(
     })
 }
 
-#[tracing::instrument(skip(event, pub_key_map, db))]
+#[tracing::instrument(skip_all)]
 pub(crate) async fn fetch_required_signing_keys(
     event: &BTreeMap<String, CanonicalJsonValue>,
     pub_key_map: &RwLock<BTreeMap<String, BTreeMap<String, Base64>>>,