pub struct ExternalManifestCommitHandler {
pub external_manifest_store: Arc<dyn ExternalManifestStore>,
}Expand description
External manifest commit handler This handler is used to commit a manifest to an external store for detailed design, see https://github.com/lance-format/lance/issues/1183
Fields§
§external_manifest_store: Arc<dyn ExternalManifestStore>Trait Implementations§
Source§impl CommitHandler for ExternalManifestCommitHandler
impl CommitHandler for ExternalManifestCommitHandler
Source§fn version_exists<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
version: u64,
object_store: &'life2 dyn OSObjectStore,
naming_scheme: ManifestNamingScheme,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn version_exists<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
version: u64,
object_store: &'life2 dyn OSObjectStore,
naming_scheme: ManifestNamingScheme,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Check whether an attached manifest version exists without loading it. Read more
fn resolve_latest_location<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
object_store: &'life2 ObjectStore,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn resolve_version_location<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
version: u64,
object_store: &'life2 dyn OSObjectStore,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn resolve_identity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
_object_store: &'life2 ObjectStore,
version: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<PredecessorIdentity>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn resolve_identity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
_object_store: &'life2 ObjectStore,
version: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<PredecessorIdentity>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
The identity of the manifest at
version as the handler’s store
records it now; None where it keeps none or has no record.Source§fn list_manifest_locations<'a>(
&self,
base_path: &Path,
object_store: &'a ObjectStore,
sorted_descending: bool,
) -> BoxStream<'a, Result<ManifestLocation>>
fn list_manifest_locations<'a>( &self, base_path: &Path, object_store: &'a ObjectStore, sorted_descending: bool, ) -> BoxStream<'a, Result<ManifestLocation>>
If
sorted_descending is true, the stream will yield manifests in descending
order of version. When the object store has a lexicographically
ordered list and the naming scheme is V2, this will use an optimized
list operation. Otherwise, it will list all manifests and sort them
in memory. When sorted_descending is false, the stream will yield manifests
in arbitrary order.Source§fn list_manifest_locations_since<'a>(
&self,
base_path: &Path,
object_store: &'a ObjectStore,
since_version: u64,
) -> BoxStream<'a, Result<ManifestLocation>>
fn list_manifest_locations_since<'a>( &self, base_path: &Path, object_store: &'a ObjectStore, since_version: u64, ) -> BoxStream<'a, Result<ManifestLocation>>
List manifest locations with version
> since_version, in descending
order of version. Read moreSource§fn commit<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
manifest: &'life1 mut Manifest,
indices: Option<Vec<IndexMetadata>>,
base_path: &'life2 Path,
object_store: &'life3 ObjectStore,
manifest_writer: ManifestWriter,
naming_scheme: ManifestNamingScheme,
transaction: Option<Transaction>,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, CommitError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn commit<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
manifest: &'life1 mut Manifest,
indices: Option<Vec<IndexMetadata>>,
base_path: &'life2 Path,
object_store: &'life3 ObjectStore,
manifest_writer: ManifestWriter,
naming_scheme: ManifestNamingScheme,
transaction: Option<Transaction>,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, CommitError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Commit a manifest. Read more
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete the recorded manifest information for a dataset at the base_path
Source§fn forget_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
version: u64,
identity: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn forget_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
version: u64,
identity: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Retire the record for
version after its manifest was removed, only
while the record still carries identity; a no-op otherwise.Source§fn supports_predecessor_condition(&self) -> bool
fn supports_predecessor_condition(&self) -> bool
Whether
Self::commit_after is available.Source§fn resolve_latest_identity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
_object_store: &'life2 ObjectStore,
) -> Pin<Box<dyn Future<Output = Result<Option<PredecessorIdentity>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn resolve_latest_identity<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
base_path: &'life1 Path,
_object_store: &'life2 ObjectStore,
) -> Pin<Box<dyn Future<Output = Result<Option<PredecessorIdentity>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
The identity of the latest manifest, for
Self::commit_after.
None where the handler cannot condition on it.Source§fn commit_after<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
manifest: &'life1 mut Manifest,
indices: Option<Vec<IndexMetadata>>,
base_path: &'life2 Path,
object_store: &'life3 ObjectStore,
manifest_writer: ManifestWriter,
naming_scheme: ManifestNamingScheme,
transaction: Option<Transaction>,
predecessor: &'life4 PredecessorIdentity,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, CommitError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn commit_after<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
manifest: &'life1 mut Manifest,
indices: Option<Vec<IndexMetadata>>,
base_path: &'life2 Path,
object_store: &'life3 ObjectStore,
manifest_writer: ManifestWriter,
naming_scheme: ManifestNamingScheme,
transaction: Option<Transaction>,
predecessor: &'life4 PredecessorIdentity,
) -> Pin<Box<dyn Future<Output = Result<ManifestLocation, CommitError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Commit only if
predecessor is still the manifest at its version,
decided with the reservation; otherwise Error::PrerequisiteFailed,
never a conflict.Source§fn is_version_not_found_definitive(&self) -> bool
fn is_version_not_found_definitive(&self) -> bool
Whether a not-found result from
Self::resolve_version_location is
definitive immediately after a commit attempt. Read moreSource§fn propagate_commit_error_after_success(&self) -> bool
fn propagate_commit_error_after_success(&self) -> bool
Whether an error should still be returned after readback proves that
the manifest from the current commit attempt landed. Read more
Source§fn list_detached_manifest_locations<'a>(
&self,
base_path: &Path,
object_store: &'a ObjectStore,
) -> BoxStream<'a, Result<ManifestLocation>>
fn list_detached_manifest_locations<'a>( &self, base_path: &Path, object_store: &'a ObjectStore, ) -> BoxStream<'a, Result<ManifestLocation>>
List detached manifest locations. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for ExternalManifestCommitHandler
impl !UnwindSafe for ExternalManifestCommitHandler
impl Freeze for ExternalManifestCommitHandler
impl Send for ExternalManifestCommitHandler
impl Sync for ExternalManifestCommitHandler
impl Unpin for ExternalManifestCommitHandler
impl UnsafeUnpin for ExternalManifestCommitHandler
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more