Enum holochain_types::prelude::ChainTopOrdering
source · [−]pub enum ChainTopOrdering {
Relaxed,
Strict,
}
Variants
Relaxed
Relaxed chain top ordering REWRITES HEADERS INLINE during a flush of
the source chain to sit on top of the current chain top. The “as at”
of the zome call initial state is completely ignored.
This may be significantly more efficient if you are CERTAIN that none
of your zome or validation logic is order dependent. Examples include
simple chat messages or tweets. Note however that even chat messages
and tweets may have subtle order dependencies, such as if a cap grant
was written or revoked that would have invalidated the zome call that
wrote data after the revocation, etc.
The efficiency of relaxed ordering comes from simply rehashing and
signing headers on the new chain top during flush, avoiding the
overhead of the client, websockets, zome call instance, wasm execution,
validation, etc. that would result from handling a HeadMoved
error
via an external driver.
Strict
The default Strict
ordering is the default for a very good reason.
Writes normally compare the chain head from the start of a zome call
against the time a write transaction is flushed from the source chain.
This is REQUIRED for data integrity if any zome or validation logic
depends on the ordering of data in a chain.
This order dependence could be obvious such as an explicit reference or
dependency. It could be very subtle such as checking for the existence
or absence of some data.
If you are unsure whether your data is order dependent you should err
on the side of caution and handle HeadMoved
errors on the client of
the zome call and restart the zome call from the start.
Trait Implementations
sourceimpl Clone for ChainTopOrdering
impl Clone for ChainTopOrdering
sourcefn clone(&self) -> ChainTopOrdering
fn clone(&self) -> ChainTopOrdering
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for ChainTopOrdering
impl Debug for ChainTopOrdering
sourceimpl Default for ChainTopOrdering
impl Default for ChainTopOrdering
sourcefn default() -> ChainTopOrdering
fn default() -> ChainTopOrdering
Returns the “default value” for a type. Read more
sourceimpl<'de> Deserialize<'de> for ChainTopOrdering
impl<'de> Deserialize<'de> for ChainTopOrdering
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<ChainTopOrdering, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<ChainTopOrdering, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl PartialEq<ChainTopOrdering> for ChainTopOrdering
impl PartialEq<ChainTopOrdering> for ChainTopOrdering
sourceimpl Serialize for ChainTopOrdering
impl Serialize for ChainTopOrdering
sourcefn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Copy for ChainTopOrdering
impl StructuralPartialEq for ChainTopOrdering
Auto Trait Implementations
impl RefUnwindSafe for ChainTopOrdering
impl Send for ChainTopOrdering
impl Sync for ChainTopOrdering
impl Unpin for ChainTopOrdering
impl UnwindSafe for ChainTopOrdering
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> FutureExt for T
impl<T> FutureExt for T
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> Pointable for T
impl<T> Pointable for T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more