pub struct GrowMachine { /* private fields */ }Expand description
The growth, as one object the control plane holds. Cheap to share
(Arc); the run happens on a thread of its own so the RPC that started
it returns at once with the first status.
Implementations§
Source§impl GrowMachine
impl GrowMachine
Sourcepub fn new(world: Arc<dyn World>) -> Arc<Self> ⓘ
pub fn new(world: Arc<dyn World>) -> Arc<Self> ⓘ
A machine over world, with the operator go-ahead policy.
Sourcepub fn with_policy(
world: Arc<dyn World>,
policy: Arc<dyn GoAheadPolicy>,
) -> Arc<Self> ⓘ
pub fn with_policy( world: Arc<dyn World>, policy: Arc<dyn GoAheadPolicy>, ) -> Arc<Self> ⓘ
A machine over world with an explicit go-ahead policy (a metered
build plugs monetize’s key in here — see go_ahead).
Sourcepub fn with_announcer(
self: &Arc<Self>,
f: impl Fn(Announcement) + Send + Sync + 'static,
)
pub fn with_announcer( self: &Arc<Self>, f: impl Fn(Announcement) + Send + Sync + 'static, )
Register the presence stream’s fan-out (see the module docs).
Sourcepub fn alarm(&self) -> Option<HealthAlarm>
pub fn alarm(&self) -> Option<HealthAlarm>
The growth’s alarm for Admin.Health, when it has one.
Sourcepub fn start(
self: &Arc<Self>,
request: &GrowStartRequest,
) -> Result<GrowStatusResponse, String>
pub fn start( self: &Arc<Self>, request: &GrowStartRequest, ) -> Result<GrowStatusResponse, String>
Admin.GrowStart. Checks the go-ahead and the box, moves to
draining, and runs the growth on its own thread. Refused by name
when the engine is absent, a growth is active, or the go-ahead does
not verify — nothing moves in any of those cases.
Sourcepub fn resume(&self, give_up: bool) -> Result<GrowStatusResponse, String>
pub fn resume(&self, give_up: bool) -> Result<GrowStatusResponse, String>
Admin.GrowResume. While waiting-members: look again now
(give_up: stop waiting, assemble what is there, serve). On a growth
that is already done it answers the status — the resize it would have
waited for has happened and been finished, so there is nothing left to
nudge and nothing wrong. In any other phase a refusal that names the
phase.
MEASURED on the mock 2026-09-27: monetize’s twin lane resized the twin’s volume and asked GrowResume; the twin had ALREADY seen the larger member, grown (G6) and served again, answered FailedPrecondition “the growth is done”, and monetize kept the finished batch open and drove it again — main’s growth waited for it at twin-sizing forever.
Sourcepub fn status(&self) -> GrowStatusResponse
pub fn status(&self) -> GrowStatusResponse
Admin.GrowStatus / Bootstrap.GrowStatus. The state, the last
survey (a fresh one when idle, since it is cheap and nothing else
refreshes it), and the journal as the same reader Capacity uses.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for GrowMachine
impl !RefUnwindSafe for GrowMachine
impl !UnwindSafe for GrowMachine
impl Send for GrowMachine
impl Sync for GrowMachine
impl Unpin for GrowMachine
impl UnsafeUnpin for GrowMachine
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request