feat(telemetry): instrument business write paths across the remaining domains
- auth (login/2FA/register/password/email change), git info_refs + git rpc and the ssh git drivers, chat message send, pulls merge, ci scheduler sweeps, outbound delivery, search and import now carry operation spans with their identifying request parameters - issues, space, user and agents write paths (create/update/delete/state, membership and moderation operations) gain #[instrument] spans with caller, space and resource id fields - spans use skip_all: passwords, tokens, codes, message bodies and other sensitive inputs stay out of span fields
ZhenYi committed
Modified lib/agents/src/services/agents.rs lib/agents/src/services/agents.rs +25 −0 View lib/agents/src/services/agents.rs
@@ -110,6 +110,11 @@
110110 }
111111 }
112112
113 #[tracing::instrument(
114 name = "agents.create_agent",
115 skip_all,
116 fields(caller = %caller, space_name = %space_name, collection_id = %collection_id)
117 )]
113118 pub async fn create_agent(
114119 &self,
115120 caller: Uuid,
@@ -271,6 +276,16 @@
271276 Ok(Self::agent_dto(row, author, &space.lower_name))
272277 }
273278
279 #[tracing::instrument(
280 name = "agents.update_agent",
281 skip_all,
282 fields(
283 caller = %caller,
284 space_name = %space_name,
285 collection_id = %collection_id,
286 agent_id = %agent_id
287 )
288 )]
274289 pub async fn update_agent(
275290 &self,
276291 caller: Uuid,
@@ -309,6 +324,16 @@
309324 Ok(Self::agent_dto(updated, author, &space.lower_name))
310325 }
311326
327 #[tracing::instrument(
328 name = "agents.delete_agent",
329 skip_all,
330 fields(
331 caller = %caller,
332 space_name = %space_name,
333 collection_id = %collection_id,
334 agent_id = %agent_id
335 )
336 )]
312337 pub async fn delete_agent(
313338 &self,
314339 caller: Uuid,
Modified lib/agents/src/services/avatar.rs lib/agents/src/services/avatar.rs +10 −0 View lib/agents/src/services/avatar.rs
@@ -21,6 +21,16 @@
2121impl AgentsService {
2222 /// Stores the raw avatar bytes in object storage and points the agent row at
2323 /// the new object; returns the refreshed agent DTO.
24 #[tracing::instrument(
25 name = "agents.upload_agent_avatar",
26 skip_all,
27 fields(
28 caller = %caller,
29 space_name = %space_name,
30 collection_id = %collection_id,
31 agent_id = %agent_id
32 )
33 )]
2434 pub async fn upload_agent_avatar(
2535 &self,
2636 caller: Uuid,
Modified lib/agents/src/services/builder.rs lib/agents/src/services/builder.rs +5 −0 View lib/agents/src/services/builder.rs
@@ -225,6 +225,11 @@
225225impl AgentsService {
226226 /// One step of the agent builder: runs the platform model over the draft
227227 /// conversation and returns the assistant reply plus the updated draft.
228 #[tracing::instrument(
229 name = "agents.builder_chat",
230 skip_all,
231 fields(caller = %caller, space_name = %space_name, collection_id = %collection_id)
232 )]
228233 pub async fn builder_chat(
229234 &self,
230235 caller: Uuid,
Modified lib/agents/src/services/chat.rs lib/agents/src/services/chat.rs +53 −0 View lib/agents/src/services/chat.rs
@@ -303,6 +303,16 @@
303303 /// Mint the browser's fanout stream grant. The web client then connects to
304304 /// the runtime's SSE endpoints directly (`/events`, `/tokens`) with `?token=`;
305305 /// the main API is not in the data path.
306 #[tracing::instrument(
307 name = "agents.create_agent_stream_token",
308 skip_all,
309 fields(
310 caller = %caller,
311 space_name = %space_name,
312 collection_id = %collection_id,
313 agent_id = %agent_id
314 )
315 )]
306316 pub async fn create_agent_stream_token(
307317 &self,
308318 caller: Uuid,
@@ -356,6 +366,16 @@
356366 Ok((space.id.to_string(), caller.to_string(), conversation_id))
357367 }
358368
369 #[tracing::instrument(
370 name = "agents.send_agent_message",
371 skip_all,
372 fields(
373 caller = %caller,
374 space_name = %space_name,
375 collection_id = %collection_id,
376 agent_id = %agent_id
377 )
378 )]
359379 pub async fn send_agent_message(
360380 &self,
361381 caller: Uuid,
@@ -536,6 +556,17 @@
536556 Ok(runs.into_iter().map(AgentRunDto::from).collect())
537557 }
538558
559 #[tracing::instrument(
560 name = "agents.cancel_agent_run",
561 skip_all,
562 fields(
563 caller = %caller,
564 space_name = %space_name,
565 collection_id = %collection_id,
566 agent_id = %agent_id,
567 run_id = %run_id
568 )
569 )]
539570 pub async fn cancel_agent_run(
540571 &self,
541572 caller: Uuid,
@@ -569,6 +600,17 @@
569600 Ok(approvals.into_iter().map(AgentApprovalDto::from).collect())
570601 }
571602
603 #[tracing::instrument(
604 name = "agents.decide_agent_approval",
605 skip_all,
606 fields(
607 caller = %caller,
608 space_name = %space_name,
609 collection_id = %collection_id,
610 agent_id = %agent_id,
611 approval_id = %approval_id
612 )
613 )]
572614 pub async fn decide_agent_approval(
573615 &self,
574616 caller: Uuid,
@@ -616,6 +658,17 @@
616658 Ok(questions.into_iter().map(AgentQuestionDto::from).collect())
617659 }
618660
661 #[tracing::instrument(
662 name = "agents.answer_agent_questions",
663 skip_all,
664 fields(
665 caller = %caller,
666 space_name = %space_name,
667 collection_id = %collection_id,
668 agent_id = %agent_id,
669 question_id = %question_id
670 )
671 )]
619672 pub async fn answer_agent_questions(
620673 &self,
621674 caller: Uuid,
Modified lib/agents/src/services/collections.rs lib/agents/src/services/collections.rs +15 −0 View lib/agents/src/services/collections.rs
@@ -111,6 +111,11 @@
111111 Ok(rows.into_iter().collect())
112112 }
113113
114 #[tracing::instrument(
115 name = "agents.create_agent_collection",
116 skip_all,
117 fields(caller = %caller, space_name = %space_name)
118 )]
114119 pub async fn create_agent_collection(
115120 &self,
116121 caller: Uuid,
@@ -286,6 +291,11 @@
286291 ))
287292 }
288293
294 #[tracing::instrument(
295 name = "agents.update_agent_collection",
296 skip_all,
297 fields(caller = %caller, space_name = %space_name, collection_id = %collection_id)
298 )]
289299 pub async fn update_agent_collection(
290300 &self,
291301 caller: Uuid,
@@ -353,6 +363,11 @@
353363 ))
354364 }
355365
366 #[tracing::instrument(
367 name = "agents.delete_agent_collection",
368 skip_all,
369 fields(caller = %caller, space_name = %space_name, collection_id = %collection_id)
370 )]
356371 pub async fn delete_agent_collection(
357372 &self,
358373 caller: Uuid,
Modified lib/auth/src/services/email.rs lib/auth/src/services/email.rs +10 −2 View lib/auth/src/services/email.rs
@@ -370,7 +370,11 @@
370370 })
371371 }
372372
373 #[tracing::instrument(name = "auth.request_email_change", skip_all)]
373 #[tracing::instrument(
374 name = "auth.request_email_change",
375 skip_all,
376 fields(uid = %uid, new_email = %cmd.new_email)
377)]
374378 pub async fn request_email_change(
375379 &self,
376380 uid: Uuid,
@@ -476,7 +480,11 @@
476480 })
477481 }
478482
479 #[tracing::instrument(name = "auth.confirm_email_change", skip_all)]
483 #[tracing::instrument(
484 name = "auth.confirm_email_change",
485 skip_all,
486 fields(uid = %uid, ticket_id = %ticket_id)
487)]
480488 pub async fn confirm_email_change(
481489 &self,
482490 uid: Uuid,
Modified lib/auth/src/services/login.rs lib/auth/src/services/login.rs +1 −1 View lib/auth/src/services/login.rs
@@ -72,7 +72,7 @@
7272 result
7373 }
7474
75 #[tracing::instrument(name = "auth.login", skip_all)]
75 #[tracing::instrument(name = "auth.login", skip_all, fields(identifier = %cmd.identifier))]
7676 async fn login_inner(
7777 &self,
7878 session: &Session,
Modified lib/auth/src/services/password.rs lib/auth/src/services/password.rs +2 −2 View lib/auth/src/services/password.rs
@@ -46,7 +46,7 @@
4646}
4747
4848impl AuthService {
49 #[tracing::instrument(name = "auth.forgot_password", skip_all)]
49 #[tracing::instrument(name = "auth.forgot_password", skip_all, fields(email = %cmd.email))]
5050 pub async fn forgot_password(
5151 &self,
5252 session: &Session,
@@ -116,7 +116,7 @@
116116 })
117117 }
118118
119 #[tracing::instrument(name = "auth.reset_password", skip_all)]
119 #[tracing::instrument(name = "auth.reset_password", skip_all, fields(email = %cmd.email))]
120120 pub async fn reset_password(&self, cmd: ResetPasswordCmd) -> Result<(), AuthError> {
121121 let config = &self.config().auth;
122122 validate_password(&cmd.new_password, &config.password_policy)?;
Modified lib/auth/src/services/register.rs lib/auth/src/services/register.rs +5 −1 View lib/auth/src/services/register.rs
@@ -36,7 +36,11 @@
3636 /// ccept_language is the raw request header; the recipient has no
3737 /// account preference yet (the row is created here), so the mail follows
3838 /// the browser and only falls back to [email].default_locale.
39 #[tracing::instrument(name = "auth.register", skip_all)]
39 #[tracing::instrument(
40 name = "auth.register",
41 skip_all,
42 fields(email = %cmd.email, username = cmd.username.as_deref().unwrap_or(""))
43)]
4044 pub async fn register(
4145 &self,
4246 session: &Session,
Modified lib/import/src/worker.rs lib/import/src/worker.rs +1 −1 View lib/import/src/worker.rs
@@ -181,7 +181,7 @@
181181 })
182182 }
183183
184 #[tracing::instrument(name = "import.process", skip_all)]
184 #[tracing::instrument(name = "import.process", skip_all, fields(job_id = %row.id))]
185185 async fn process(&self, row: job::Model) {
186186 let heartbeat = self.spawn_heartbeat(row.id);
187187 let outcome = self.run_job(&row).await;
Modified lib/issues/src/services/attachments.rs lib/issues/src/services/attachments.rs +3 −0 View lib/issues/src/services/attachments.rs
@@ -118,6 +118,7 @@
118118}
119119
120120impl IssueService {
121 #[tracing::instrument(name = "issues.create_issue_attachment", skip_all, fields(caller = %caller))]
121122 pub async fn create_issue_attachment(
122123 &self,
123124 caller: Uuid,
@@ -200,6 +201,7 @@
200201 })
201202 }
202203
204 #[tracing::instrument(name = "issues.finalize_issue_attachment", skip_all, fields(caller = %caller, attachment_id = %attachment_id))]
203205 pub async fn finalize_issue_attachment(
204206 &self,
205207 caller: Uuid,
@@ -253,6 +255,7 @@
253255 }
254256
255257 /// Removes the row and, best effort, the stored object.
258 #[tracing::instrument(name = "issues.delete_issue_attachment", skip_all, fields(caller = %caller, attachment_id = %attachment_id))]
256259 pub async fn delete_issue_attachment(
257260 &self,
258261 caller: Uuid,
Modified lib/issues/src/services/boards.rs lib/issues/src/services/boards.rs +3 −0 View lib/issues/src/services/boards.rs
@@ -192,6 +192,7 @@
192192 Ok(Self::board_dto(board, open_count, closed_count))
193193 }
194194
195 #[tracing::instrument(name = "issues.create_board", skip_all, fields(caller = %caller, space = %space_name))]
195196 pub async fn create_board(
196197 &self,
197198 caller: Uuid,
@@ -388,6 +389,7 @@
388389 self.build_board_dto(board).await
389390 }
390391
392 #[tracing::instrument(name = "issues.update_board", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
391393 pub async fn update_board(
392394 &self,
393395 caller: Uuid,
@@ -461,6 +463,7 @@
461463 self.build_board_dto(updated).await
462464 }
463465
466 #[tracing::instrument(name = "issues.delete_board", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
464467 pub async fn delete_board(
465468 &self,
466469 caller: Uuid,
Modified lib/issues/src/services/comments.rs lib/issues/src/services/comments.rs +3 −0 View lib/issues/src/services/comments.rs
@@ -69,6 +69,7 @@
6969}
7070
7171impl IssueService {
72 #[tracing::instrument(name = "issues.create_comment", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
7273 pub async fn create_comment(
7374 &self,
7475 caller: Uuid,
@@ -439,6 +440,7 @@
439440 })
440441 }
441442
443 #[tracing::instrument(name = "issues.update_comment", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, comment_id = %comment_id))]
442444 pub async fn update_comment(
443445 &self,
444446 caller: Uuid,
@@ -530,6 +532,7 @@
530532 })
531533 }
532534
535 #[tracing::instrument(name = "issues.delete_comment", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, comment_id = %comment_id))]
533536 pub async fn delete_comment(
534537 &self,
535538 caller: Uuid,
Modified lib/issues/src/services/dependencies.rs lib/issues/src/services/dependencies.rs +2 −0 View lib/issues/src/services/dependencies.rs
@@ -47,6 +47,7 @@
4747}
4848
4949impl IssueService {
50 #[tracing::instrument(name = "issues.create_dependency", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
5051 pub async fn create_dependency(
5152 &self,
5253 caller: Uuid,
@@ -156,6 +157,7 @@
156157 Ok(rows.into_iter().map(DependencyDto::from).collect())
157158 }
158159
160 #[tracing::instrument(name = "issues.delete_dependency", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, dep_id = %dep_id))]
159161 pub async fn delete_dependency(
160162 &self,
161163 caller: Uuid,
Modified lib/issues/src/services/issue_users.rs lib/issues/src/services/issue_users.rs +1 −0 View lib/issues/src/services/issue_users.rs
@@ -95,6 +95,7 @@
9595 })
9696 }
9797
98 #[tracing::instrument(name = "issues.update_issue_user", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, uid = %uid))]
9899 pub async fn update_issue_user(
99100 &self,
100101 caller: Uuid,
Modified lib/issues/src/services/issues.rs lib/issues/src/services/issues.rs +5 −0 View lib/issues/src/services/issues.rs
@@ -444,6 +444,7 @@
444444 })
445445 }
446446
447 #[tracing::instrument(name = "issues.create_issue", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
447448 pub async fn create_issue(
448449 &self,
449450 caller: Uuid,
@@ -847,6 +848,7 @@
847848 self.build_issue_dto(caller, item).await
848849 }
849850
851 #[tracing::instrument(name = "issues.update_issue", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
850852 pub async fn update_issue(
851853 &self,
852854 caller: Uuid,
@@ -1152,6 +1154,7 @@
11521154}
11531155
11541156impl IssueService {
1157 #[tracing::instrument(name = "issues.bulk_update_state", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
11551158 pub async fn bulk_update_state(
11561159 &self,
11571160 caller: Uuid,
@@ -1212,6 +1215,7 @@
12121215}
12131216
12141217impl IssueService {
1218 #[tracing::instrument(name = "issues.delete_issue", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
12151219 pub async fn delete_issue(
12161220 &self,
12171221 caller: Uuid,
@@ -1249,6 +1253,7 @@
12491253 Ok(())
12501254 }
12511255
1256 #[tracing::instrument(name = "issues.close_issue", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
12521257 pub async fn close_issue(
12531258 &self,
12541259 caller: Uuid,
Modified lib/issues/src/services/labels.rs lib/issues/src/services/labels.rs +5 −0 View lib/issues/src/services/labels.rs
@@ -131,6 +131,7 @@
131131 Ok(label)
132132 }
133133
134 #[tracing::instrument(name = "issues.create_label", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
134135 pub async fn create_label(
135136 &self,
136137 caller: Uuid,
@@ -249,6 +250,7 @@
249250 Ok(LabelDto::from(l))
250251 }
251252
253 #[tracing::instrument(name = "issues.update_label", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, label_id = %label_id))]
252254 pub async fn update_label(
253255 &self,
254256 caller: Uuid,
@@ -322,6 +324,7 @@
322324 Ok(LabelDto::from(updated))
323325 }
324326
327 #[tracing::instrument(name = "issues.delete_label", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, label_id = %label_id))]
325328 pub async fn delete_label(
326329 &self,
327330 caller: Uuid,
@@ -393,6 +396,7 @@
393396 Ok(labels.into_iter().map(LabelDto::from).collect())
394397 }
395398
399 #[tracing::instrument(name = "issues.bind_label", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, label_id = %label_id))]
396400 pub async fn bind_label(
397401 &self,
398402 caller: Uuid,
@@ -457,6 +461,7 @@
457461 Ok(())
458462 }
459463
464 #[tracing::instrument(name = "issues.unbind_label", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, label_id = %label_id))]
460465 pub async fn unbind_label(
461466 &self,
462467 caller: Uuid,
Modified lib/issues/src/services/members.rs lib/issues/src/services/members.rs +2 −0 View lib/issues/src/services/members.rs
@@ -52,6 +52,7 @@
5252}
5353
5454impl IssueService {
55 #[tracing::instrument(name = "issues.create_member", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
5556 pub async fn create_member(
5657 &self,
5758 caller: Uuid,
@@ -252,6 +253,7 @@
252253 })
253254 }
254255
256 #[tracing::instrument(name = "issues.delete_member", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, member_id = %member_id))]
255257 pub async fn delete_member(
256258 &self,
257259 caller: Uuid,
Modified lib/issues/src/services/milestones.rs lib/issues/src/services/milestones.rs +3 −0 View lib/issues/src/services/milestones.rs
@@ -147,6 +147,7 @@
147147 Ok(Self::milestone_dto(m, nums_issues, nums_closed_issues))
148148 }
149149
150 #[tracing::instrument(name = "issues.create_milestone", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
150151 pub async fn create_milestone(
151152 &self,
152153 caller: Uuid,
@@ -276,6 +277,7 @@
276277 self.build_milestone_dto(m).await
277278 }
278279
280 #[tracing::instrument(name = "issues.update_milestone", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, milestone_id = %milestone_id))]
279281 pub async fn update_milestone(
280282 &self,
281283 caller: Uuid,
@@ -333,6 +335,7 @@
333335 self.build_milestone_dto(updated).await
334336 }
335337
338 #[tracing::instrument(name = "issues.delete_milestone", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, milestone_id = %milestone_id))]
336339 pub async fn delete_milestone(
337340 &self,
338341 caller: Uuid,
Modified lib/issues/src/services/pins.rs lib/issues/src/services/pins.rs +3 −0 View lib/issues/src/services/pins.rs
@@ -50,6 +50,7 @@
5050}
5151
5252impl IssueService {
53 #[tracing::instrument(name = "issues.update_pin", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, pin_id = %pin_id))]
5354 pub async fn update_pin(
5455 &self,
5556 caller: Uuid,
@@ -76,6 +77,7 @@
7677}
7778
7879impl IssueService {
80 #[tracing::instrument(name = "issues.create_pin", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id))]
7981 pub async fn create_pin(
8082 &self,
8183 caller: Uuid,
@@ -136,6 +138,7 @@
136138 Ok(rows.into_iter().map(PinDto::from).collect())
137139 }
138140
141 #[tracing::instrument(name = "issues.delete_pin", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, pin_id = %pin_id))]
139142 pub async fn delete_pin(
140143 &self,
141144 caller: Uuid,
Modified lib/issues/src/services/reactions.rs lib/issues/src/services/reactions.rs +5 −0 View lib/issues/src/services/reactions.rs
@@ -95,6 +95,7 @@
9595 Ok(clean.to_string())
9696 }
9797
98 #[tracing::instrument(name = "issues.create_reaction", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
9899 pub async fn create_reaction(
99100 &self,
100101 caller: Uuid,
@@ -154,6 +155,7 @@
154155 })
155156 }
156157
158 #[tracing::instrument(name = "issues.create_comment_reaction", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, comment_id = %comment_id))]
157159 pub async fn create_comment_reaction(
158160 &self,
159161 caller: Uuid,
@@ -261,6 +263,7 @@
261263 Ok(aggregate_reactions(rows))
262264 }
263265
266 #[tracing::instrument(name = "issues.remove_reaction_by_emoji", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
264267 pub async fn remove_reaction_by_emoji(
265268 &self,
266269 caller: Uuid,
@@ -286,6 +289,7 @@
286289 Ok(())
287290 }
288291
292 #[tracing::instrument(name = "issues.remove_comment_reaction_by_emoji", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, comment_id = %comment_id))]
289293 pub async fn remove_comment_reaction_by_emoji(
290294 &self,
291295 caller: Uuid,
@@ -316,6 +320,7 @@
316320 Ok(())
317321 }
318322
323 #[tracing::instrument(name = "issues.delete_reaction", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, reaction_id = %reaction_id))]
319324 pub async fn delete_reaction(
320325 &self,
321326 caller: Uuid,
Modified lib/issues/src/services/repo_relations.rs lib/issues/src/services/repo_relations.rs +2 −0 View lib/issues/src/services/repo_relations.rs
@@ -44,6 +44,7 @@
4444}
4545
4646impl IssueService {
47 #[tracing::instrument(name = "issues.create_repo_relation", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
4748 pub async fn create_repo_relation(
4849 &self,
4950 caller: Uuid,
@@ -104,6 +105,7 @@
104105 Ok(rows.into_iter().map(RepoRelDto::from).collect())
105106 }
106107
108 #[tracing::instrument(name = "issues.delete_repo_relation", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, rel_id = %rel_id))]
107109 pub async fn delete_repo_relation(
108110 &self,
109111 caller: Uuid,
Modified lib/issues/src/services/stopwatch.rs lib/issues/src/services/stopwatch.rs +2 −0 View lib/issues/src/services/stopwatch.rs
@@ -72,6 +72,7 @@
7272 })
7373 }
7474
75 #[tracing::instrument(name = "issues.start_stopwatch", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
7576 pub async fn start_stopwatch(
7677 &self,
7778 caller: Uuid,
@@ -116,6 +117,7 @@
116117 })
117118 }
118119
120 #[tracing::instrument(name = "issues.stop_stopwatch", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
119121 pub async fn stop_stopwatch(
120122 &self,
121123 caller: Uuid,
Modified lib/issues/src/services/tracked_time.rs lib/issues/src/services/tracked_time.rs +3 −0 View lib/issues/src/services/tracked_time.rs
@@ -57,6 +57,7 @@
5757}
5858
5959impl IssueService {
60 #[tracing::instrument(name = "issues.create_tracked_time", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
6061 pub async fn create_tracked_time(
6162 &self,
6263 caller: Uuid,
@@ -90,6 +91,7 @@
9091 })
9192 }
9293
94 #[tracing::instrument(name = "issues.update_tracked_time", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, time_id = %time_id))]
9395 pub async fn update_tracked_time(
9496 &self,
9597 caller: Uuid,
@@ -126,6 +128,7 @@
126128 })
127129 }
128130
131 #[tracing::instrument(name = "issues.delete_tracked_time", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id, time_id = %time_id))]
129132 pub async fn delete_tracked_time(
130133 &self,
131134 caller: Uuid,
Modified lib/issues/src/services/watches.rs lib/issues/src/services/watches.rs +2 −0 View lib/issues/src/services/watches.rs
@@ -63,6 +63,7 @@
6363 })
6464 }
6565
66 #[tracing::instrument(name = "issues.upsert_watch", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
6667 pub async fn upsert_watch(
6768 &self,
6869 caller: Uuid,
@@ -113,6 +114,7 @@
113114 })
114115 }
115116
117 #[tracing::instrument(name = "issues.delete_watch", skip_all, fields(caller = %caller, space = %space_name, board_id = %board_id, issue_id = %issue_id))]
116118 pub async fn delete_watch(
117119 &self,
118120 caller: Uuid,
Modified lib/pulls/src/services/ai.rs lib/pulls/src/services/ai.rs +1 −0 View lib/pulls/src/services/ai.rs
@@ -79,6 +79,7 @@
7979 None => git::sync::actor_language(self.db_read(), actor).await,
8080 },
8181 trace: export::telemetry::traceparent(),
82 request_id: export::telemetry::request_id(),
8283 };
8384 let job_id =
8485 git::sync::ai_task::submit_ai_task(self.db_write(), &self.state.redis, cfg, &task)
Modified lib/pulls/src/services/merge.rs lib/pulls/src/services/merge.rs +5 −1 View lib/pulls/src/services/merge.rs
@@ -40,7 +40,11 @@
4040impl PullService {
4141 /// `handle` carries the resolved repository, pull row, caller and admin bit
4242 /// so the signature does not repeat four positionally-similar arguments.
43 #[tracing::instrument(name = "pulls.merge", skip_all)]
43 #[tracing::instrument(
44 name = "pulls.merge",
45 skip_all,
46 fields(space = %space_name, repo = %repo_name, number = handle.pull.autoincrement_id)
47)]
4448 pub async fn merge_pull(
4549 &self,
4650 space_name: String,
Modified lib/space/src/services/bans.rs lib/space/src/services/bans.rs +3 −0 View lib/space/src/services/bans.rs
@@ -75,6 +75,7 @@
7575pub type BanPage = export::pagination::Page<BanDto>;
7676
7777impl SpaceService {
78 #[tracing::instrument(name = "space.ban_user", skip_all, fields(caller = %caller, space = %space_name))]
7879 pub async fn ban_user(
7980 &self,
8081 caller: Uuid,
@@ -206,6 +207,7 @@
206207 })
207208 }
208209
210 #[tracing::instrument(name = "space.update_ban", skip_all, fields(caller = %caller, space = %space_name, uid = %uid))]
209211 pub async fn update_ban(
210212 &self,
211213 caller: Uuid,
@@ -268,6 +270,7 @@
268270 })
269271 }
270272
273 #[tracing::instrument(name = "space.unban_user", skip_all, fields(caller = %caller, space = %space_name, uid = %uid))]
271274 pub async fn unban_user(
272275 &self,
273276 caller: Uuid,
Modified lib/space/src/services/dir.rs lib/space/src/services/dir.rs +6 −0 View lib/space/src/services/dir.rs
@@ -172,6 +172,7 @@
172172 .ok_or(SpaceError::NotFound)
173173 }
174174
175 #[tracing::instrument(name = "space.create_dir_node", skip_all, fields(caller = %caller, space = %space_name))]
175176 pub async fn create_dir_node(
176177 &self,
177178 caller: Uuid,
@@ -402,6 +403,7 @@
402403 Ok(forest)
403404 }
404405
406 #[tracing::instrument(name = "space.update_dir_node", skip_all, fields(caller = %caller, space = %space_name, dir_id = %dir_id))]
405407 pub async fn update_dir_node(
406408 &self,
407409 caller: Uuid,
@@ -622,6 +624,7 @@
622624 .collect())
623625 }
624626
627 #[tracing::instrument(name = "space.set_dir_group_overwrite", skip_all, fields(caller = %caller, space = %space_name, dir_id = %dir_id, group_id = %group_id))]
625628 pub async fn set_dir_group_overwrite(
626629 &self,
627630 caller: Uuid,
@@ -678,6 +681,7 @@
678681 }
679682 }
680683
684 #[tracing::instrument(name = "space.remove_dir_group_overwrite", skip_all, fields(caller = %caller, space = %space_name, dir_id = %dir_id, group_id = %group_id))]
681685 pub async fn remove_dir_group_overwrite(
682686 &self,
683687 caller: Uuid,
@@ -734,6 +738,7 @@
734738 .collect())
735739 }
736740
741 #[tracing::instrument(name = "space.set_dir_user_overwrite", skip_all, fields(caller = %caller, space = %space_name, dir_id = %dir_id, user_id = %user_id))]
737742 pub async fn set_dir_user_overwrite(
738743 &self,
739744 caller: Uuid,
@@ -795,6 +800,7 @@
795800 })
796801 }
797802
803 #[tracing::instrument(name = "space.remove_dir_user_overwrite", skip_all, fields(caller = %caller, space = %space_name, dir_id = %dir_id, user_id = %user_id))]
798804 pub async fn remove_dir_user_overwrite(
799805 &self,
800806 caller: Uuid,
Modified lib/space/src/services/groups.rs lib/space/src/services/groups.rs +7 −0 View lib/space/src/services/groups.rs
@@ -108,6 +108,7 @@
108108}
109109
110110impl SpaceService {
111 #[tracing::instrument(name = "space.create_group", skip_all, fields(caller = %caller, space = %space_name))]
111112 pub async fn create_group(
112113 &self,
113114 caller: Uuid,
@@ -237,6 +238,7 @@
237238 })
238239 }
239240
241 #[tracing::instrument(name = "space.update_group", skip_all, fields(caller = %caller, space = %space_name, group_id = %group_id))]
240242 pub async fn update_group(
241243 &self,
242244 caller: Uuid,
@@ -335,6 +337,7 @@
335337 })
336338 }
337339
340 #[tracing::instrument(name = "space.delete_group", skip_all, fields(caller = %caller, space = %space_name, group_id = %group_id))]
338341 pub async fn delete_group(
339342 &self,
340343 caller: Uuid,
@@ -452,6 +455,7 @@
452455 })
453456 }
454457
458 #[tracing::instrument(name = "space.assign_group", skip_all, fields(caller = %caller, space = %space_name, uid = %uid))]
455459 pub async fn assign_group(
456460 &self,
457461 caller: Uuid,
@@ -484,6 +488,7 @@
484488 Ok(())
485489 }
486490
491 #[tracing::instrument(name = "space.unassign_group", skip_all, fields(caller = %caller, space = %space_name, uid = %uid, group_id = %group_id))]
487492 pub async fn unassign_group(
488493 &self,
489494 caller: Uuid,
@@ -503,6 +508,7 @@
503508 Ok(())
504509 }
505510
511 #[tracing::instrument(name = "space.join_group_self", skip_all, fields(caller = %caller, space = %space_name, group_id = %group_id))]
506512 pub async fn join_group_self(
507513 &self,
508514 caller: Uuid,
@@ -540,6 +546,7 @@
540546 Ok(())
541547 }
542548
549 #[tracing::instrument(name = "space.leave_group_self", skip_all, fields(caller = %caller, space = %space_name, group_id = %group_id))]
543550 pub async fn leave_group_self(
544551 &self,
545552 caller: Uuid,
Modified lib/space/src/services/images.rs lib/space/src/services/images.rs +2 −0 View lib/space/src/services/images.rs
@@ -366,6 +366,7 @@
366366 Ok(space)
367367 }
368368
369 #[tracing::instrument(name = "space.upload_space_image", skip_all, fields(caller = %caller, space = %space_name, kind = ?kind))]
369370 pub async fn upload_space_image(
370371 &self,
371372 caller: Uuid,
@@ -479,6 +480,7 @@
479480 })
480481 }
481482
483 #[tracing::instrument(name = "space.delete_space_image", skip_all, fields(caller = %caller, space = %space_name, kind = ?kind))]
482484 pub async fn delete_space_image(
483485 &self,
484486 caller: Uuid,
Modified lib/space/src/services/invites.rs lib/space/src/services/invites.rs +4 −0 View lib/space/src/services/invites.rs
@@ -84,6 +84,7 @@
8484}
8585
8686impl SpaceService {
87 #[tracing::instrument(name = "space.create_invite", skip_all, fields(caller = %caller, space = %space_name))]
8788 pub async fn create_invite(
8889 &self,
8990 caller: Uuid,
@@ -337,6 +338,7 @@
337338 })
338339 }
339340
341 #[tracing::instrument(name = "space.revoke_invite", skip_all, fields(caller = %caller, space = %space_name, invite_id = %invite_id))]
340342 pub async fn revoke_invite(
341343 &self,
342344 caller: Uuid,
@@ -384,6 +386,7 @@
384386
385387 /// The invitee declines: revoke the row so the inviter's invite list stops
386388 /// reporting it as pending. Only the addressed invitee may do this.
389 #[tracing::instrument(name = "space.reject_invite", skip_all, fields(caller = %caller))]
387390 pub async fn reject_invite(&self, caller: Uuid, accept_code: &str) -> Result<(), SpaceError> {
388391 let invite = space_invite::Entity::find()
389392 .filter(space_invite::Column::AcceptCode.eq(accept_code))
@@ -412,6 +415,7 @@
412415 Ok(())
413416 }
414417
418 #[tracing::instrument(name = "space.accept_invite", skip_all, fields(caller = %caller))]
415419 pub async fn accept_invite(
416420 &self,
417421 caller: Uuid,
Modified lib/space/src/services/join_requests.rs lib/space/src/services/join_requests.rs +4 −0 View lib/space/src/services/join_requests.rs
@@ -359,6 +359,7 @@
359359 })
360360 }
361361
362 #[tracing::instrument(name = "space.create_join_request", skip_all, fields(caller = %caller, space = %space_name))]
362363 pub async fn create_join_request(
363364 &self,
364365 caller: Uuid,
@@ -499,6 +500,7 @@
499500 Ok(join_request_dto(inserted, &users))
500501 }
501502
503 #[tracing::instrument(name = "space.withdraw_join_request", skip_all, fields(caller = %caller, space = %space_name, request_id = %request_id))]
502504 pub async fn withdraw_join_request(
503505 &self,
504506 caller: Uuid,
@@ -702,6 +704,7 @@
702704 Ok(join_request_dto(updated, &users))
703705 }
704706
707 #[tracing::instrument(name = "space.approve_join_request", skip_all, fields(caller = %caller, space = %space_name, request_id = %request_id))]
705708 pub async fn approve_join_request(
706709 &self,
707710 caller: Uuid,
@@ -712,6 +715,7 @@
712715 .await
713716 }
714717
718 #[tracing::instrument(name = "space.reject_join_request", skip_all, fields(caller = %caller, space = %space_name, request_id = %request_id))]
715719 pub async fn reject_join_request(
716720 &self,
717721 caller: Uuid,
Modified lib/space/src/services/join_rules.rs lib/space/src/services/join_rules.rs +3 −0 View lib/space/src/services/join_rules.rs
@@ -152,6 +152,7 @@
152152}
153153
154154impl SpaceService {
155 #[tracing::instrument(name = "space.create_join_rule", skip_all, fields(caller = %caller, space = %space_name))]
155156 pub async fn create_join_rule(
156157 &self,
157158 caller: Uuid,
@@ -183,6 +184,7 @@
183184 Ok(JoinRuleDto::from(inserted))
184185 }
185186
187 #[tracing::instrument(name = "space.update_join_rule", skip_all, fields(caller = %caller, space = %space_name, rule_id = %rule_id))]
186188 pub async fn update_join_rule(
187189 &self,
188190 caller: Uuid,
@@ -217,6 +219,7 @@
217219 Ok(JoinRuleDto::from(updated))
218220 }
219221
222 #[tracing::instrument(name = "space.delete_join_rule", skip_all, fields(caller = %caller, space = %space_name, rule_id = %rule_id))]
220223 pub async fn delete_join_rule(
221224 &self,
222225 caller: Uuid,
Modified lib/space/src/services/members.rs lib/space/src/services/members.rs +4 −0 View lib/space/src/services/members.rs
@@ -202,6 +202,7 @@
202202 }
203203 }
204204
205 #[tracing::instrument(name = "space.add_member", skip_all, fields(caller = %caller, space = %space_name))]
205206 pub async fn add_member(
206207 &self,
207208 caller: Uuid,
@@ -336,6 +337,7 @@
336337 })
337338 }
338339
340 #[tracing::instrument(name = "space.update_member", skip_all, fields(caller = %caller, space = %space_name, uid = %uid))]
339341 pub async fn update_member(
340342 &self,
341343 caller: Uuid,
@@ -424,6 +426,7 @@
424426 })
425427 }
426428
429 #[tracing::instrument(name = "space.leave_space", skip_all, fields(caller = %caller, space = %space_name))]
427430 pub async fn leave_space(&self, caller: Uuid, space_name: &str) -> Result<(), SpaceError> {
428431 let space = lookup_space_by_name(self, space_name).await?;
429432 if space.owner_id == caller {
@@ -468,6 +471,7 @@
468471 Ok(())
469472 }
470473
474 #[tracing::instrument(name = "space.remove_member", skip_all, fields(caller = %caller, space = %space_name, uid = %uid))]
471475 pub async fn remove_member(
472476 &self,
473477 caller: Uuid,
Modified lib/space/src/services/rooms.rs lib/space/src/services/rooms.rs +2 −0 View lib/space/src/services/rooms.rs
@@ -84,6 +84,7 @@
8484}
8585
8686impl SpaceService {
87 #[tracing::instrument(name = "space.create_room", skip_all, fields(caller = %caller, space = %space_name))]
8788 pub async fn create_room(
8889 &self,
8990 caller: Uuid,
@@ -232,6 +233,7 @@
232233 Ok(RoomDto::from(inserted))
233234 }
234235
236 #[tracing::instrument(name = "space.delete_room", skip_all, fields(caller = %caller, room_id = %room_id))]
235237 pub async fn delete_room(&self, caller: Uuid, room_id: Uuid) -> Result<(), SpaceError> {
236238 let room = rooms::Entity::find_by_id(room_id)
237239 .one(self.db().read())
Modified lib/space/src/services/spaces.rs lib/space/src/services/spaces.rs +3 −0 View lib/space/src/services/spaces.rs
@@ -157,6 +157,7 @@
157157 Ok(map)
158158 }
159159
160 #[tracing::instrument(name = "space.create_space", skip_all, fields(caller = %caller))]
160161 pub async fn create_space(
161162 &self,
162163 caller: Uuid,
@@ -363,6 +364,7 @@
363364 })
364365 }
365366
367 #[tracing::instrument(name = "space.update_space", skip_all, fields(caller = %caller, space = %space_name))]
366368 pub async fn update_space(
367369 &self,
368370 caller: Uuid,
@@ -477,6 +479,7 @@
477479 })
478480 }
479481
482 #[tracing::instrument(name = "space.delete_space", skip_all, fields(caller = %caller, space = %space_name))]
480483 pub async fn delete_space(&self, caller: Uuid, space_name: &str) -> Result<(), SpaceError> {
481484 let space = lookup_space_by_name(self, space_name).await?;
482485 if space.owner_id != caller && !export::authz::is_system_uid(caller) {
Modified lib/user/src/services/avatar.rs lib/user/src/services/avatar.rs +2 −0 View lib/user/src/services/avatar.rs
@@ -266,6 +266,7 @@
266266 }
267267 }
268268
269 #[tracing::instrument(name = "user.upload_avatar_stream", skip_all, fields(uid = %uid))]
269270 pub async fn upload_avatar_stream(
270271 &self,
271272 uid: Uuid,
@@ -356,6 +357,7 @@
356357 })
357358 }
358359
360 #[tracing::instrument(name = "user.delete_avatar", skip_all, fields(uid = %uid))]
359361 pub async fn delete_avatar(&self, uid: Uuid) -> Result<(), UserError> {
360362 let user = user::Entity::find_by_id(uid)
361363 .one(self.db().read())
Modified lib/user/src/services/emails.rs lib/user/src/services/emails.rs +12 −0 View lib/user/src/services/emails.rs
@@ -66,6 +66,7 @@
6666 Ok(rows.into_iter().map(EmailDto::from).collect())
6767 }
6868
69 #[tracing::instrument(name = "user.add_email", skip_all, fields(uid = %uid))]
6970 pub async fn add_email(&self, uid: Uuid, cmd: AddEmailCmd) -> Result<AddEmailResp, UserError> {
7071 let config = &self.config().user;
7172 let email = cmd.email.trim().to_lowercase();
@@ -160,6 +161,7 @@
160161 })
161162 }
162163
164 #[tracing::instrument(name = "user.verify_add_email", skip_all, fields(uid = %uid))]
163165 pub async fn verify_add_email(
164166 &self,
165167 uid: Uuid,
@@ -266,6 +268,11 @@
266268 Ok(updated)
267269 }
268270
271 #[tracing::instrument(
272 name = "user.set_primary_email",
273 skip_all,
274 fields(uid = %uid, email_id = %email_id)
275 )]
269276 pub async fn set_primary_email(
270277 &self,
271278 uid: Uuid,
@@ -309,6 +316,11 @@
309316 Ok(updated)
310317 }
311318
319 #[tracing::instrument(
320 name = "user.delete_email",
321 skip_all,
322 fields(uid = %uid, email_id = %email_id)
323 )]
312324 pub async fn delete_email(&self, uid: Uuid, email_id: Uuid) -> Result<(), UserError> {
313325 let row = user_emails::Entity::find_by_id(email_id)
314326 .one(self.db().read())
Modified lib/user/src/services/notifications.rs lib/user/src/services/notifications.rs +6 −0 View lib/user/src/services/notifications.rs
@@ -130,6 +130,7 @@
130130 Ok(rows.into_iter().map(SavedMessageDto::from).collect())
131131 }
132132
133 #[tracing::instrument(name = "user.save_message", skip_all, fields(uid = %uid))]
133134 pub async fn save_message(
134135 &self,
135136 uid: Uuid,
@@ -157,6 +158,11 @@
157158 Ok(SavedMessageDto::from(saved))
158159 }
159160
161 #[tracing::instrument(
162 name = "user.unsave_message",
163 skip_all,
164 fields(uid = %uid, message_id = %message_id)
165 )]
160166 pub async fn unsave_message(&self, uid: Uuid, message_id: Uuid) -> Result<(), UserError> {
161167 user_saved_messages::Entity::delete_many()
162168 .filter(user_saved_messages::Column::UserId.eq(uid))
Modified lib/user/src/services/profile.rs lib/user/src/services/profile.rs +11 −0 View lib/user/src/services/profile.rs
@@ -250,6 +250,7 @@
250250 Ok(existing)
251251 }
252252
253 #[tracing::instrument(name = "user.create_meme", skip_all, fields(uid = %uid))]
253254 pub async fn create_meme(&self, uid: Uuid, cmd: UpsertMemeCmd) -> Result<MemeDto, UserError> {
254255 Self::validate_meme_cmd(&cmd)?;
255256 let existing = self.find_meme_by_name(uid, &cmd.name).await?;
@@ -260,6 +261,11 @@
260261 Ok(MemeDto::from(model))
261262 }
262263
264 #[tracing::instrument(
265 name = "user.update_meme",
266 skip_all,
267 fields(uid = %uid, meme_id = %meme_id)
268 )]
263269 pub async fn update_meme(
264270 &self,
265271 uid: Uuid,
@@ -316,6 +322,11 @@
316322 Ok(model)
317323 }
318324
325 #[tracing::instrument(
326 name = "user.delete_meme",
327 skip_all,
328 fields(uid = %uid, meme_id = %meme_id)
329 )]
319330 pub async fn delete_meme(&self, uid: Uuid, meme_id: Uuid) -> Result<(), UserError> {
320331 self.owned_meme(uid, meme_id).await?;
321332 user_favorite_memes::Entity::delete_by_id(meme_id)
Modified lib/user/src/services/push_subscriptions.rs lib/user/src/services/push_subscriptions.rs +6 −0 View lib/user/src/services/push_subscriptions.rs
@@ -59,6 +59,7 @@
5959 Ok(rows.into_iter().map(PushSubscriptionDto::from).collect())
6060 }
6161
62 #[tracing::instrument(name = "user.upsert_push_subscription", skip_all, fields(uid = %uid))]
6263 pub async fn upsert_push_subscription(
6364 &self,
6465 uid: Uuid,
@@ -103,6 +104,11 @@
103104 Ok(PushSubscriptionDto::from(model))
104105 }
105106
107 #[tracing::instrument(
108 name = "user.delete_push_subscription",
109 skip_all,
110 fields(uid = %uid, push_id = %push_id)
111 )]
106112 pub async fn delete_push_subscription(
107113 &self,
108114 uid: Uuid,
Modified lib/user/src/services/sessions.rs lib/user/src/services/sessions.rs +6 −0 View lib/user/src/services/sessions.rs
@@ -112,6 +112,11 @@
112112 Ok(SessionDto::build(row, current_token))
113113 }
114114
115 #[tracing::instrument(
116 name = "user.revoke_session",
117 skip_all,
118 fields(uid = %uid, session_id = %session_id)
119 )]
115120 pub async fn revoke_session(&self, uid: Uuid, session_id: Uuid) -> Result<(), UserError> {
116121 let row = user_sessions::Entity::find_by_id(session_id)
117122 .one(self.db().read())
@@ -129,6 +134,7 @@
129134 Ok(())
130135 }
131136
137 #[tracing::instrument(name = "user.revoke_all_sessions", skip_all, fields(uid = %uid))]
132138 pub async fn revoke_all_sessions(&self, uid: Uuid) -> Result<CountResp, UserError> {
133139 let now = OffsetDateTime::now_utc();
134140 let result = user_sessions::Entity::update_many()