Make Repository API return abstract dyn Timeline.

+ minor cargo fmt cleanup
This commit is contained in:
Arseny Sher
2021-05-10 16:25:53 +03:00
committed by Heikki Linnakangas
parent 5f4e32f505
commit 8fff26ad49
4 changed files with 6 additions and 11 deletions

View File

@@ -24,7 +24,7 @@ use zenith_utils::lsn::Lsn;
use crate::basebackup;
use crate::page_cache;
use crate::repository::{BufferTag, RelTag, Repository, Timeline};
use crate::repository::{BufferTag, RelTag, Repository};
use crate::restore_local_repo;
use crate::walreceiver;
use crate::PageServerConf;

View File

@@ -12,22 +12,17 @@ use zenith_utils::lsn::Lsn;
///
/// A repository corresponds to one .zenith directory. One repository holds multiple
/// timelines, forked off from the same initial call to 'initdb'.
///
/// FIXME: I wish these would return an abstract `&dyn Timeline`.
pub trait Repository {
/// Get Timeline handle for given zenith timeline ID.
///
/// The Timeline is expected to be already "open", i.e. `get_or_restore_timeline`
/// should've been called on it earlier already.
fn get_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<rocksdb::RocksTimeline>>;
fn get_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<dyn Timeline>>;
/// Get Timeline handle for given zenith timeline ID.
///
/// Creates a new Timeline object if it's not "open" already.
fn get_or_restore_timeline(
&self,
timelineid: ZTimelineId,
) -> Result<Arc<rocksdb::RocksTimeline>>;
fn get_or_restore_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<dyn Timeline>>;
//fn get_stats(&self) -> RepositoryStats;
}

View File

@@ -162,7 +162,7 @@ impl RocksRepository {
// Get handle to a given timeline. It is assumed to already exist.
impl Repository for RocksRepository {
fn get_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<RocksTimeline>> {
fn get_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<dyn Timeline>> {
let timelines = self.timelines.lock().unwrap();
match timelines.get(&timelineid) {
@@ -171,7 +171,7 @@ impl Repository for RocksRepository {
}
}
fn get_or_restore_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<RocksTimeline>> {
fn get_or_restore_timeline(&self, timelineid: ZTimelineId) -> Result<Arc<dyn Timeline>> {
let mut timelines = self.timelines.lock().unwrap();
match timelines.get(&timelineid) {

View File

@@ -7,7 +7,7 @@
//!
use crate::page_cache;
use crate::repository::{Repository, Timeline};
use crate::repository::{Repository};
use crate::waldecoder::*;
use crate::PageServerConf;
use crate::ZTimelineId;