Mark a file the decoder cannot open, so the sweep stops fetching it
A decode failure in the face sweep was counted, logged at debug where nobody saw it, and left unmarked — so the next pass fetched the same file and failed the same way. For the 521 MB panorama behind rawler's panic that was half a gigabyte per sweep, on a tablet. It is now marked examined with nothing found and a zero edge, which is what a later "try again with a better decoder" pass would select on, and the warning names the file. The failure count is unchanged: it did fail.
This commit is contained in:
+18
-18
File diff suppressed because one or more lines are too long
+24
-1
@@ -4298,7 +4298,30 @@ pub fn spawn_face_sweep(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::debug!("face sweep: {}: {e}", req.path);
|
// A file the decoder cannot open fails the same
|
||||||
|
// way on every pass, and every pass fetched it
|
||||||
|
// first: a 521 MB panorama the decoder refuses
|
||||||
|
// was downloaded once per sweep, on a tablet,
|
||||||
|
// and reported at debug level where nobody saw
|
||||||
|
// it. It is marked examined with nothing found,
|
||||||
|
// so the next pass does not fetch it again; the
|
||||||
|
// zero edge is what says why, and is what a
|
||||||
|
// later "try again with a better decoder" pass
|
||||||
|
// would select on. The count still says it
|
||||||
|
// failed, because it did.
|
||||||
|
log::warn!("face sweep: {}: {e}", req.path);
|
||||||
|
if let Err(e) = dr_catalog::faces::record_detections(
|
||||||
|
catalog.connection(),
|
||||||
|
dr_types::ImageId(req.image_id as u64),
|
||||||
|
&model_id,
|
||||||
|
0,
|
||||||
|
&[],
|
||||||
|
) {
|
||||||
|
log::warn!(
|
||||||
|
"face sweep: marking {} as unreadable: {e}",
|
||||||
|
req.image_id
|
||||||
|
);
|
||||||
|
}
|
||||||
lane_failed += 1;
|
lane_failed += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user