Skip to content

Commit bb15083

Browse files
committed
fix entity image cache fallbacks
1 parent 9a2eaf2 commit bb15083

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

src/model/entity_images.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ impl ModelController {
133133
"Unable to get {} image url: {} kind {:?}",
134134
config.cache_prefix, external_id, kind,
135135
)))?;
136-
let (_, mut writer) = local_provider.get_file_write_stream(&image_path).await?;
137136
let image_reader = SourceRead::Request(image_request)
138137
.into_reader(
139138
Some(library_id),
@@ -151,7 +150,18 @@ impl ModelController {
151150
false,
152151
)
153152
.await?;
154-
writer.write_all(&resized).await?;
153+
let (_, mut writer) = local_provider.get_file_write_stream(&image_path).await?;
154+
let write_result = async {
155+
writer.write_all(&resized).await?;
156+
writer.shutdown().await
157+
}
158+
.await;
159+
if let Err(error) = write_result {
160+
// A failed write may leave a partial cache entry that would otherwise be
161+
// treated as valid by the next request.
162+
let _ = local_provider.remove(&image_path).await;
163+
return Err(error.into());
164+
}
155165
}
156166

157167
let source = local_provider.get_file(&image_path, None).await?;

src/model/people.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ impl ModelController {
445445
size: Option<ImageSize>,
446446
requesting_user: &ConnectedUser,
447447
) -> crate::Result<FileStreamResult<AsyncReadPinBox>> {
448-
let target_kind = kind.unwrap_or(ImageType::Poster);
448+
let target_kind = kind.clone().unwrap_or(ImageType::Poster);
449449
let config = EntityImageConfig {
450450
folder: ".portraits",
451451
cache_prefix: "person",
@@ -465,7 +465,7 @@ impl ModelController {
465465
.person_image(
466466
library_id,
467467
&existing_person.id,
468-
Some(target_kind),
468+
kind,
469469
size,
470470
requesting_user,
471471
)
@@ -502,7 +502,7 @@ impl ModelController {
502502
.person_image(
503503
library_id,
504504
&person.id,
505-
Some(target_kind),
505+
kind,
506506
size,
507507
requesting_user,
508508
)
@@ -530,7 +530,7 @@ impl ModelController {
530530
library_id,
531531
".portraits",
532532
person_id,
533-
Some(target_kind.clone()),
533+
kind.clone(),
534534
requesting_user,
535535
)
536536
.await?
@@ -540,7 +540,7 @@ impl ModelController {
540540
.refresh_person_image(
541541
library_id,
542542
person_id,
543-
&Some(target_kind.clone()),
543+
&kind,
544544
requesting_user,
545545
)
546546
.await;
@@ -552,7 +552,7 @@ impl ModelController {
552552
format!(
553553
"Successfully refreshed person image from external source: {} {:?}",
554554
person_id,
555-
Some(target_kind.clone())
555+
kind.clone()
556556
),
557557
);
558558
}
@@ -593,7 +593,7 @@ impl ModelController {
593593
.update_person_image(
594594
library_id,
595595
person_id,
596-
&Some(target_kind.clone()),
596+
&kind,
597597
reader,
598598
&ConnectedUser::ServerAdmin,
599599
)
@@ -626,7 +626,7 @@ impl ModelController {
626626
library_id,
627627
".portraits",
628628
person_id,
629-
Some(target_kind),
629+
kind,
630630
size,
631631
requesting_user,
632632
)

0 commit comments

Comments
 (0)