Skip to main content

ReferenceTenancy

Struct ReferenceTenancy 

Source
pub struct ReferenceTenancy { /* private fields */ }
Expand description

A reference tenancy: every partition resolves to a placement of the configured PlacementMode. The default SharedIndex mode isolates by an injected _tenant field; the dedicated modes isolate by index/cluster with no body rewrite.

Implementations§

Source§

impl ReferenceTenancy

Source

pub fn new( cluster: ClusterId, index: IndexName, endpoint: impl Into<String>, ) -> Self

Builds the reference tenancy over one cluster and shared index, served at endpoint (the cluster’s base URL, reported as part of the placement result so the sink can pool it). Defaults to PlacementMode::SharedIndex.

Source

pub fn with_placement_mode(self, mode: PlacementMode) -> Self

Sets the placement mode (builder). SharedIndex rewrites the body; DedicatedIndex/DedicatedCluster route without touching it.

Trait Implementations§

Source§

impl Debug for ReferenceTenancy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TenancySpi for ReferenceTenancy

Source§

fn resolve_partition( &self, ctx: &RequestCtx<'_>, body: BodyDoc<'_>, ) -> Result<PartitionId, SpiError>

Resolves the partition id for a request. Read more
Source§

fn doc_id_rule(&self) -> Option<DocIdRule>

Optional rule to construct the document _id (and _routing).
Source§

fn injected_fields(&self) -> Vec<InjectedField>

Fields injected on ingest and stripped on read. The field names are chosen here (the SPI decides them).
Source§

fn cluster_endpoint(&self, cluster: &ClusterId) -> Option<String>

The base URL of a cluster, by id. The data plane carries each cluster’s endpoint on the placement result, but the cursor-affinity and admin pass-through paths route to a cluster by id with no placement to consult, so they resolve the endpoint through this lookup. Return None for an unknown cluster; the request then fails closed rather than route blind. Read more
Source§

async fn placement_for( &self, partition: &PartitionId, ) -> Result<PlacementAt, SpiError>

Resolves a partition to its current placement and the epoch it was read at. NOT a pure function, migration mutates the placement state. Read more
Source§

fn sensitive_fields(&self) -> SensitivitySpec

Declares which field values observability may capture, driving value-suppression (NFR-S2). Deny-by-default: the standard implementation returns SensitivitySpec::all_sensitive (everything redacted) and allow-lists known-safe fields with SensitivitySpec::allowing. The default here is all_sensitive, so a tenancy that does not override it leaks nothing.
Source§

async fn admit_write(&self, _partition: &PartitionId, _epoch: Epoch) -> bool

The migration write gate (docs/06 §2): may a write that resolved at epoch for partition still commit? Re-checked at dispatch, after the decision was stamped, so a placement that advanced (or entered cutover) in the meantime is caught. false means reject as a retryable stale-epoch error; the client re-resolves against the new placement. Read more

Auto Trait Implementations§

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> 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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