Skip to content

Commit ec3d21c

Browse files
committed
move handling of broken "last seen ref" into registry watcher
1 parent bdb6c63 commit ec3d21c

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

src/build_queue.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,7 @@ impl BuildQueue {
5050
pub fn last_seen_reference(&self) -> Result<Option<Oid>> {
5151
let mut conn = self.db.get()?;
5252
if let Some(value) = get_config(&mut conn, ConfigName::LastSeenIndexReference)?.as_str() {
53-
match Oid::from_str(value) {
54-
Ok(oid) => return Ok(Some(oid)),
55-
Err(err) => {
56-
log::error!("queue locked because of invalid last_seen_index_reference \"{}\" in database: {}", value, err);
57-
self.lock()?;
58-
return Ok(None);
59-
}
60-
}
53+
return Ok(Some(Oid::from_str(value)?));
6154
}
6255
Ok(None)
6356
}
@@ -629,16 +622,13 @@ mod tests {
629622
}
630623

631624
#[test]
632-
fn test_broken_db_reference_locks_queue() {
625+
fn test_broken_db_reference_breaks() {
633626
crate::test::wrapper(|env| {
634627
let mut conn = env.db().conn();
635628
set_config(&mut conn, ConfigName::LastSeenIndexReference, "invalid")?;
636629

637630
let queue = env.build_queue();
638-
queue.unlock()?;
639-
assert!(!queue.is_locked()?);
640-
assert_eq!(queue.last_seen_reference()?, None);
641-
assert!(queue.is_locked()?);
631+
assert!(queue.last_seen_reference().is_err());
642632

643633
Ok(())
644634
});

src/utils/daemon.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,18 @@ pub fn watch_registry(
2121

2222
// On startup we fetch the last seen index reference from
2323
// the database and set it in the local index repository.
24-
if let Some(oid) = build_queue.last_seen_reference()? {
25-
index.diff()?.set_last_seen_reference(oid)?;
24+
match build_queue.last_seen_reference() {
25+
Ok(Some(oid)) => {
26+
index.diff()?.set_last_seen_reference(oid)?;
27+
}
28+
Ok(None) => {}
29+
Err(err) => {
30+
log::error!(
31+
"queue locked because of invalid last_seen_index_reference in database: {}",
32+
err
33+
);
34+
build_queue.lock()?;
35+
}
2636
}
2737

2838
loop {

0 commit comments

Comments
 (0)