Skip to main content

WriteTxn

Struct WriteTxn 

Source
pub struct WriteTxn<'g> { /* private fields */ }
Expand description

RAII owner of the single graph write lock.

Since v1.2 (BRIEF 1) the transaction no longer holds the snapshot cell, schema-version, or provider handles — those moved to the single committer thread, which the transaction reaches via the cheap Committer submit handle. The transaction still owns the write lock + allocator guards for the duration of execution and releases them when seal consumes it.

Implementations§

Source§

impl<'g> WriteTxn<'g>

Source

pub fn mutator(&mut self) -> Mutator<'_, 'g>

Borrow a mutator tied to this transaction.

Source

pub fn read(&self) -> &SeleneGraph

Borrow the transaction-local working graph.

Source

pub fn commit(self) -> GraphResult<CommitOutcome>

Commit without caller principal bytes.

Source

pub fn commit_with_principal( self, principal: Option<Arc<[u8]>>, ) -> GraphResult<CommitOutcome>

Commit with optional caller-owned principal bytes for D12 audit replay.

Since v1.2 (BRIEF 1) commit is seal-and-handover: this method runs seal on the calling thread (generation/meta bump + GG02 validation under the write lock, then lock release), then submits the resulting SealedCommit to the per-graph single committer thread and blocks until it is durable + visible. The public contract is unchanged — “commit() returns ⇒ durable + visible” — only the internal threading model differs.

GG02 closed-graph violations still abort here, on the calling thread, before any handoff, so error timing is identical to v1.0/v1.1.

Registered index providers are notified by the committer after the new snapshot is published; the same-thread re-entrancy guard now protects the committer thread (one committer ⇒ still sound). Same-thread re-entrant provider calls into SharedGraph::begin_write() are detected via the thread-local fanout counter and panic with a clear message; the committer’s fan-out boundary catches those panics (along with callback-internal panics and returned errors) so a single misbehaving provider can never crash the committer thread.

§Errors

Returns the GG02 / validation error from seal, or a GraphError::Durable if the WAL append failed or the committer thread is no longer running.

Source

pub fn rollback(self)

Roll back graph changes via Drop and release the write lock.

Source

pub fn change_count(&self) -> usize

Number of changes accumulated since this transaction opened.

Source

pub fn has_schema_changes(&self) -> bool

Whether this transaction has accumulated schema-changing work.

Trait Implementations§

Source§

impl Drop for WriteTxn<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'g> !RefUnwindSafe for WriteTxn<'g>

§

impl<'g> !Send for WriteTxn<'g>

§

impl<'g> !UnwindSafe for WriteTxn<'g>

§

impl<'g> Freeze for WriteTxn<'g>

§

impl<'g> Sync for WriteTxn<'g>

§

impl<'g> Unpin for WriteTxn<'g>

§

impl<'g> UnsafeUnpin for WriteTxn<'g>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more