Starting impl Sentry and tracing #3

Merged
qpismont merged 6 commits from tracing into main 2026-06-10 20:27:26 +02:00
Owner
No description provided.
qpismont added 1 commit 2026-06-09 22:58:57 +02:00
qpismont added 1 commit 2026-06-09 23:17:13 +02:00
qpismont added 1 commit 2026-06-10 19:50:43 +02:00
Add async bot running with semaphore
Author
Owner
@Herald
Herald reviewed 2026-06-10 19:54:12 +02:00
Herald left a comment
Collaborator

Review Feedback

4 issues found.


Summary

Les changements introduisent bien Sentry et le tracing, avec des bonnes pratiques comme l'initialisation conditionnelle, l'utilisation de #[instrument], la limitation de concurrence et la capture d'erreurs. Cependant, plusieurs points méritent attention :

  • Incohérence de framework HTTP (Axum vs Actix) dans les imports et les dépendances.
  • Dépendance superflue sentry-actix à cause des features par défaut non désactivées.
  • Ajout répété d'event processors Sentry (fuite mémoire potentielle).
  • Commentaire en français dans un code majoritairement anglais.
    Il est recommandé de clarifier le choix du framework, désactiver les features par défaut de sentry, et utiliser l'intégration Sentry pour capturer le corps des requêtes plutôt qu'une approche manuelle.

Cost: $0.00412082

## Review Feedback ### 4 issues found. --- ### Summary Les changements introduisent bien Sentry et le tracing, avec des bonnes pratiques comme l'initialisation conditionnelle, l'utilisation de `#[instrument]`, la limitation de concurrence et la capture d'erreurs. Cependant, plusieurs points méritent attention : - Incohérence de framework HTTP (Axum vs Actix) dans les imports et les dépendances. - Dépendance superflue `sentry-actix` à cause des features par défaut non désactivées. - Ajout répété d'event processors Sentry (fuite mémoire potentielle). - Commentaire en français dans un code majoritairement anglais. Il est recommandé de clarifier le choix du framework, désactiver les features par défaut de `sentry`, et utiliser l'intégration Sentry pour capturer le corps des requêtes plutôt qu'une approche manuelle. --- ### Cost: $0.00412082
@@ -11,8 +11,14 @@ tokio-util = "0.7"
futures-util = "0.3"
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
sentry = { version = "0.48", features = ["tower-axum-matched-path"] }
Collaborator

La dépendance sentry est configurée avec la feature tower-axum-matched-path, mais le fichier Cargo.lock inclut également sentry-actix, ce qui suggère que les features par défaut ne sont pas désactivées. Pour éviter de tirer des dépendances inutiles (comme actix), il est recommandé d'ajouter default-features = false. Exemple : sentry = { version = "0.48", default-features = false, features = ["tower-axum-matched-path"] }.

La dépendance `sentry` est configurée avec la feature `tower-axum-matched-path`, mais le fichier Cargo.lock inclut également `sentry-actix`, ce qui suggère que les features par défaut ne sont pas désactivées. Pour éviter de tirer des dépendances inutiles (comme `actix`), il est recommandé d'ajouter `default-features = false`. Exemple : `sentry = { version = "0.48", default-features = false, features = ["tower-axum-matched-path"] }`.
@@ -1,13 +1,19 @@
use axum::body::{Bytes, to_bytes};
use anyhow::anyhow;
use axum::body::{Body, Bytes, to_bytes};
Collaborator

Le fichier importe des éléments d'Axum, alors que le projet semble utiliser Actix-Web (présent dans Cargo.lock). Cette incohérence peut causer des erreurs de compilation ou des comportements inattendus. Vérifiez si le projet est en cours de migration vers Axum ou s'il s'agit d'une erreur. Dans tous les cas, un seul framework HTTP doit être utilisé.

Le fichier importe des éléments d'Axum, alors que le projet semble utiliser Actix-Web (présent dans Cargo.lock). Cette incohérence peut causer des erreurs de compilation ou des comportements inattendus. Vérifiez si le projet est en cours de migration vers Axum ou s'il s'agit d'une erreur. Dans tous les cas, un seul framework HTTP doit être utilisé.
src/api.rs Outdated
@@ -63,2 +80,4 @@
let body_bytes = read_body(req.into_body()).await?;
let body_str = String::from_utf8_lossy(&body_bytes).into_owned();
sentry::configure_scope(|scope| {
Collaborator

Ajouter un event processor à chaque requête est problématique : les processors s'accumulent et ne sont jamais retirés, ce qui peut entraîner une fuite mémoire et une dégradation des performances. De plus, Sentry peut déjà capturer le corps de la requête si l'option attach_request_body est activée dans ClientOptions (ou via l'intégration tower). Il est préférable de configurer cela globalement plutôt que manuellement à chaque appel.

Ajouter un event processor à chaque requête est problématique : les processors s'accumulent et ne sont jamais retirés, ce qui peut entraîner une fuite mémoire et une dégradation des performances. De plus, Sentry peut déjà capturer le corps de la requête si l'option `attach_request_body` est activée dans `ClientOptions` (ou via l'intégration tower). Il est préférable de configurer cela globalement plutôt que manuellement à chaque appel.
@@ -95,2 +70,4 @@
});
}
// Le channel est fermé : on attend que les tâches en cours se terminent
Collaborator

Les commentaires sont en français, alors que le reste du code est en anglais. Pour la cohérence du projet, il est conseillé de rédiger tous les commentaires en anglais (ou dans une seule langue).

Les commentaires sont en français, alors que le reste du code est en anglais. Pour la cohérence du projet, il est conseillé de rédiger tous les commentaires en anglais (ou dans une seule langue).
qpismont marked this conversation as resolved
qpismont added 1 commit 2026-06-10 20:08:48 +02:00
qpismont added 1 commit 2026-06-10 20:19:30 +02:00
qpismont added 1 commit 2026-06-10 20:27:07 +02:00
qpismont merged commit 9175f9b3a2 into main 2026-06-10 20:27:26 +02:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: qpismont/herald#3