pub struct StorageControllerState<T: Timestamp + Lattice + Codec64 + TimestampManipulation> {
Show 19 fields now: NowFn, envd_epoch: NonZeroI64, pub(crate) collections: BTreeMap<GlobalId, CollectionState<T>>, pub(crate) exports: BTreeMap<GlobalId, ExportState<T>>, pub(crate) stash: Stash, pub(crate) persist_table_worker: PersistTableWriteWorker<T>, pub(crate) persist_monotonic_worker: PersistMonotonicWriteWorker<T>, persist_read_handles: PersistReadWorker<T>, stashed_response: Option<StorageResponse<T>>, pending_compaction_commands: Vec<(GlobalId, Antichain<T>, Option<StorageInstanceId>)>, pub(crate) collection_manager: CollectionManager<T>, pub(crate) introspection_ids: BTreeMap<IntrospectionType, GlobalId>, introspection_tokens: BTreeMap<GlobalId, Box<dyn Any + Send + Sync>>, source_statistics: Arc<Mutex<BTreeMap<GlobalId, StatsInitState<SourceStatisticsUpdate>>>>, sink_statistics: Arc<Mutex<BTreeMap<GlobalId, StatsInitState<SinkStatisticsUpdate>>>>, clients: BTreeMap<StorageInstanceId, RehydratingStorageClient<T>>, replicas: BTreeMap<StorageInstanceId, ReplicaId>, initialized: bool, config: StorageParameters,
}
Expand description

Controller state maintained for each storage instance.

Fields§

§now: NowFn

A function that returns the current time.

§envd_epoch: NonZeroI64

The fencing token for this instance of the controller.

§collections: BTreeMap<GlobalId, CollectionState<T>>

Collections maintained by the storage controller.

This collection only grows, although individual collections may be rendered unusable. This is to prevent the re-binding of identifiers to other descriptions.

§exports: BTreeMap<GlobalId, ExportState<T>>§stash: Stash§persist_table_worker: PersistTableWriteWorker<T>

Write handle for table shards.

§persist_monotonic_worker: PersistMonotonicWriteWorker<T>

Write handle for monotonic shards.

§persist_read_handles: PersistReadWorker<T>

Read handles for all shards.

These handles are on the other end of a Tokio task, so that work can be done asynchronously without blocking the storage controller.

§stashed_response: Option<StorageResponse<T>>§pending_compaction_commands: Vec<(GlobalId, Antichain<T>, Option<StorageInstanceId>)>

Compaction commands to send during the next call to StorageController::process.

§collection_manager: CollectionManager<T>

Interface for managed collections

§introspection_ids: BTreeMap<IntrospectionType, GlobalId>

Tracks which collection is responsible for which IntrospectionType.

§introspection_tokens: BTreeMap<GlobalId, Box<dyn Any + Send + Sync>>

Tokens for tasks that drive updating introspection collections. Dropping this will make sure that any tasks (or other resources) will stop when needed.

§source_statistics: Arc<Mutex<BTreeMap<GlobalId, StatsInitState<SourceStatisticsUpdate>>>>

Consolidated metrics updates to periodically write. We do not eagerly initialize this, and its contents are entirely driven by StorageResponse::StatisticsUpdates’s.

§sink_statistics: Arc<Mutex<BTreeMap<GlobalId, StatsInitState<SinkStatisticsUpdate>>>>

Consolidated metrics updates to periodically write. We do not eagerly initialize this, and its contents are entirely driven by StorageResponse::StatisticsUpdates’s.

§clients: BTreeMap<StorageInstanceId, RehydratingStorageClient<T>>

Clients for all known storage instances.

§replicas: BTreeMap<StorageInstanceId, ReplicaId>

For each storage instance the ID of its replica, if any.

§initialized: bool

Set to true once initialization_complete has been called.

§config: StorageParameters

Storage configuration to apply to newly provisioned instances.

Implementations§

source§

impl<T: Timestamp + Lattice + Codec64 + From<EpochMillis> + TimestampManipulation> StorageControllerState<T>

source

pub(crate) async fn new( postgres_url: String, tx: UnboundedSender<StorageResponse<T>>, now: NowFn, factory: &StashFactory, envd_epoch: NonZeroI64 ) -> Self

Trait Implementations§

source§

impl<T: Debug + Timestamp + Lattice + Codec64 + TimestampManipulation> Debug for StorageControllerState<T>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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 Twhere 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<T> Pointable for T

source§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

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<P, R> ProtoType<R> for Pwhere R: RustType<P>,

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

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

§

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 Twhere U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V

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