Add Span to repository traversal

This commit is contained in:
2026-07-20 23:25:52 -04:00
parent 7c7a078f96
commit 22153cd19a
+4
View File
@@ -7,6 +7,7 @@ use reqwest_middleware::reqwest::Url;
use std::collections::HashSet; use std::collections::HashSet;
use std::pin::Pin; use std::pin::Pin;
use std::task::{Context, Poll, ready}; use std::task::{Context, Poll, ready};
use tracing::debug_span;
/// Recursively traverse an entire repository. /// Recursively traverse an entire repository.
/// ///
@@ -21,6 +22,7 @@ pub struct Traverse<'a> {
visited_urls: HashSet<Url>, visited_urls: HashSet<Url>,
pending_urls: HashSet<Url>, pending_urls: HashSet<Url>,
parallelism: Option<usize>, parallelism: Option<usize>,
span: tracing::Span,
} }
impl<'a> Traverse<'a> { impl<'a> Traverse<'a> {
@@ -35,6 +37,7 @@ impl<'a> Traverse<'a> {
visited_urls: HashSet::new(), visited_urls: HashSet::new(),
pending_urls: HashSet::new(), pending_urls: HashSet::new(),
parallelism, parallelism,
span: debug_span!("Traverse Repository", %root),
}; };
this.visited_urls.insert(root.clone()); this.visited_urls.insert(root.clone());
this.stream this.stream
@@ -89,6 +92,7 @@ impl<'a> Stream for Traverse<'a> {
type Item = crate::Result<RdfSource<Dataset>>; type Item = crate::Result<RdfSource<Dataset>>;
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> { fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
let _enter = self.span.clone().entered();
let result = match ready!(self.stream.poll_next_unpin(cx)) { let result = match ready!(self.stream.poll_next_unpin(cx)) {
Some(Ok(document)) => { Some(Ok(document)) => {
self.visited_urls.insert(document.origin().clone()); self.visited_urls.insert(document.origin().clone());