From ba79946af176e6103a18e04cc2ccc93a8934584f Mon Sep 17 00:00:00 2001 From: Bojan Serafimov Date: Fri, 17 Jun 2022 00:00:48 -0400 Subject: [PATCH] Fix create_empty_timeline --- pageserver/src/layered_repository.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pageserver/src/layered_repository.rs b/pageserver/src/layered_repository.rs index 5c5b03268a..fdd03ecf8b 100644 --- a/pageserver/src/layered_repository.rs +++ b/pageserver/src/layered_repository.rs @@ -243,15 +243,15 @@ impl Repository for LayeredRepository { ); timeline.layers.write().unwrap().next_open_layer_at = Some(initdb_lsn); + // Insert if not exists let timeline = Arc::new(timeline); - let r = timelines.insert( - timelineid, - LayeredTimelineEntry::Loaded(Arc::clone(&timeline)), - ); - ensure!( - r.is_none(), - "assertion failure, inserted duplicate timeline" - ); + match timelines.entry(timelineid) { + Entry::Occupied(_) => bail!("Timeline already exists"), + Entry::Vacant(vacant) => { + vacant.insert(LayeredTimelineEntry::Loaded(Arc::clone(&timeline))) + } + }; + Ok(timeline) }