Skip to content

Commit 6060a0b

Browse files
authored
Merge pull request #746 from Kixiron/git-peekin
Added some fault-tolerance to the build queue
2 parents 103cacc + 26c3f87 commit 6060a0b

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/docbuilder/queue.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ use log::{debug, error};
99

1010
impl DocBuilder {
1111
/// Updates crates.io-index repository and adds new crates into build queue.
12-
/// Returns size of queue
12+
/// Returns the number of crates added
1313
pub fn get_new_crates(&mut self) -> Result<usize> {
1414
let conn = connect_db()?;
1515
let index = Index::from_path_or_cloned(&self.options.crates_io_index_path)?;
16-
let mut changes = index.fetch_changes()?;
17-
let mut add_count: usize = 0;
16+
let (mut changes, oid) = index.peek_changes()?;
17+
let mut crates_added = 0;
1818

19-
// I belive this will fix ordering of queue if we get more than one crate from changes
19+
// I believe this will fix ordering of queue if we get more than one crate from changes
2020
changes.reverse();
2121

2222
for krate in &changes {
@@ -41,17 +41,27 @@ impl DocBuilder {
4141
),
4242
}
4343
}
44+
4445
ChangeKind::Added => {
4546
let priority = get_crate_priority(&conn, &krate.name)?;
46-
add_crate_to_queue(&conn, &krate.name, &krate.version, priority).ok();
4747

48-
debug!("{}-{} added into build queue", krate.name, krate.version);
49-
add_count += 1;
48+
match add_crate_to_queue(&conn, &krate.name, &krate.version, priority) {
49+
Ok(()) => {
50+
debug!("{}-{} added into build queue", krate.name, krate.version);
51+
crates_added += 1;
52+
}
53+
Err(err) => error!(
54+
"failed adding {}-{} into build queue: {}",
55+
krate.name, krate.version, err
56+
),
57+
}
5058
}
5159
}
5260
}
5361

54-
Ok(add_count)
62+
index.set_last_seen_reference(oid)?;
63+
64+
Ok(crates_added)
5565
}
5666

5767
pub fn get_queue_count(&self) -> Result<i64> {

0 commit comments

Comments
 (0)