pub struct TopologyMigrationRoot {
pub format_version: u16,
pub operation_id: TopologyOperationId,
pub plan: TopologyPlanRef,
pub compatibility: TopologyCompatibilityRef,
pub cut: TopologyCutCommit,
pub preserved_objects: Vec<TopologyPreservedObject>,
pub future_only_objects: Vec<String>,
pub subscriptions: Vec<TopologySubscriptionRoot>,
pub source_initializations: Vec<TopologySourceInitialization>,
}Expand description
Immutable target restore/initialization requirements, retained by one authority append. All state ranges, source/snapshot/channel progress, sink decisions and replay segment references remain in the exact old checkpoint. No historical manifest or state payload is rewritten.
Fields§
§format_version: u16Root encoding, separate from logical topology, catalog and checkpoint versions.
operation_id: TopologyOperationIdExact admitted request.
plan: TopologyPlanRefImmutable admission payload.
compatibility: TopologyCompatibilityRefComplete participant-certified compatibility descriptor.
cut: TopologyCutCommitDefinitive old-topology checkpoint and its shared Commit append.
preserved_objects: Vec<TopologyPreservedObject>Sorted exact identity mappings for every unchanged object.
future_only_objects: Vec<String>Sorted new objects. Streams/sinks receive only target input; sources use their sealed cursors.
subscriptions: Vec<TopologySubscriptionRoot>Sorted preserved subscription incarnations and publication frontiers.
source_initializations: Vec<TopologySourceInitialization>Sorted new-source positions, sealed once for this exact operation and cut. Empty format-1 roots retain their original canonical bytes.
Implementations§
Source§impl TopologyMigrationRoot
impl TopologyMigrationRoot
Sourcepub fn validate_target_checkpoint_predecessor(
&self,
descriptor: &ClusterTopologyValidation,
target: &CommittedCheckpointIndex,
parent: &CommittedCheckpointIndex,
) -> Result<(), TopologyError>
pub fn validate_target_checkpoint_predecessor( &self, descriptor: &ClusterTopologyValidation, target: &CommittedCheckpointIndex, parent: &CommittedCheckpointIndex, ) -> Result<(), TopologyError>
Check the first target index against the exact retained parent index and sealed mapping. The authority must first audit this root’s durable Commit/Release. This pure check grants no writer or runtime permission and never changes either checkpoint’s historical identity.
§Errors
Rejects a foreign cut, changed source inventory, ownership/ABI/deployment or regressed watermarks. Ordinary checkpoint continuity continues to require identical pipeline IDs.
Source§impl TopologyMigrationRoot
impl TopologyMigrationRoot
Sourcepub fn validate_restore_cut(
&self,
operation: &TopologyAdmissionStatus,
descriptor: &ClusterTopologyValidation,
index: &CommittedCheckpointIndex,
manifests: &[CheckpointManifest],
) -> Result<(), TopologyError>
pub fn validate_restore_cut( &self, operation: &TopologyAdmissionStatus, descriptor: &ClusterTopologyValidation, index: &CommittedCheckpointIndex, manifests: &[CheckpointManifest], ) -> Result<(), TopologyError>
Rebuild the exact requirements from checksummed historical manifests before target restore. This does not rewrite their parent identity or grant installation/output authority.
§Errors
Rejects missing, divergent or reordered state/progress/subscription mappings.
Sourcepub fn encode_and_reference(
&self,
) -> Result<(Vec<u8>, TopologyMigrationRootRef), TopologyError>
pub fn encode_and_reference( &self, ) -> Result<(Vec<u8>, TopologyMigrationRootRef), TopologyError>
Canonical bounded body for durable storage. This encodes requirements, never authority.
§Errors
Rejects malformed identities, unordered mappings or a body above 1 MiB.
Trait Implementations§
Source§impl Clone for TopologyMigrationRoot
impl Clone for TopologyMigrationRoot
Source§impl Debug for TopologyMigrationRoot
impl Debug for TopologyMigrationRoot
Source§impl<'de> Deserialize<'de> for TopologyMigrationRoot
impl<'de> Deserialize<'de> for TopologyMigrationRoot
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for TopologyMigrationRoot
Source§impl PartialEq for TopologyMigrationRoot
impl PartialEq for TopologyMigrationRoot
Source§impl Serialize for TopologyMigrationRoot
impl Serialize for TopologyMigrationRoot
impl StructuralPartialEq for TopologyMigrationRoot
Auto Trait Implementations§
impl Freeze for TopologyMigrationRoot
impl RefUnwindSafe for TopologyMigrationRoot
impl Send for TopologyMigrationRoot
impl Sync for TopologyMigrationRoot
impl Unpin for TopologyMigrationRoot
impl UnsafeUnpin for TopologyMigrationRoot
impl UnwindSafe for TopologyMigrationRoot
Blanket Implementations§
impl<T> Allocation for T
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
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> ⓘ
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].