From a31bc88e46da66295bb2261a88059febc1c0474c Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Wed, 30 Mar 2022 18:17:58 +0300 Subject: [PATCH] Fix race condition in image layer refer #1439 --- pageserver/src/layered_repository/image_layer.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pageserver/src/layered_repository/image_layer.rs b/pageserver/src/layered_repository/image_layer.rs index ab51c36cae..fb121264ab 100644 --- a/pageserver/src/layered_repository/image_layer.rs +++ b/pageserver/src/layered_repository/image_layer.rs @@ -267,7 +267,7 @@ impl ImageLayer { // a write lock. (Or rather, release and re-lock in write mode.) drop(inner); let mut inner = self.inner.write().unwrap(); - if inner.book.is_none() { + if !inner.loaded { self.load_inner(&mut inner)?; } else { // Another thread loaded it while we were not holding the lock. @@ -279,7 +279,6 @@ impl ImageLayer { // above call to `load_inner`, so it's already been released). And // while we do that, another thread could unload again, so we have // to re-check and retry if that happens. - drop(inner); } }