Skip to main content

ResolveLimits

Struct ResolveLimits 

Source
pub struct ResolveLimits<'a> {
    pub base_budget: u64,
    pub row_batch: usize,
    pub workers: usize,
    pub lookahead_bytes: u64,
    pub check_every: u64,
    pub watchdog: Option<Arc<MemWatchdog>>,
    pub cancel: Option<&'a AtomicBool>,
    pub progress: Option<&'a IndexProgress>,
    pub label: &'a str,
    pub on_pause: Option<&'a (dyn Fn() -> u64 + Sync)>,
}
Expand description

The knobs and hooks the indexer hands the resolver. ResolveLimits::none is the old behaviour: unbounded bases, no watchdog, no progress.

Fields§

§base_budget: u64

Ceiling on held delta-base bytes; 0 = unbounded.

§row_batch: usize

Rows per batch to the row sink.

§workers: usize

How many subtrees are walked at once. 1 is the serial resolver and the reference every other value is compared against; the output is the same stream at any value (see the_same_pack_resolves_to_the_same_bytes_at_1_2_and_4_workers).

§lookahead_bytes: u64

Bytes of resolved-but-not-yet-emitted objects the workers may hold. 0 takes DEFAULT_LOOKAHEAD_BYTES.

§check_every: u64

Objects between two checkpoints (cancel flag, watchdog).

§watchdog: Option<Arc<MemWatchdog>>§cancel: Option<&'a AtomicBool>§progress: Option<&'a IndexProgress>§label: &'a str

Names the repository in log lines.

§on_pause: Option<&'a (dyn Fn() -> u64 + Sync)>

Called once per watchdog pause and again every re-flush: the owner drops whatever it holds that can be rebuilt (the store’s caches) and returns how much it dropped. Zero means the owner had nothing to give, which is the fact index.spilled reported 627 times and nobody acted on — see crate::memguard::PauseEnd::NothingToGive.

Implementations§

Source§

impl<'a> ResolveLimits<'a>

Source

pub fn none() -> Self

Unbounded, unwatched, unreported — what a test or a one-off resolve uses.

Source

pub fn for_indexer( label: &'a str, cancel: &'a AtomicBool, progress: &'a IndexProgress, watchdog: Arc<MemWatchdog>, on_pause: &'a (dyn Fn() -> u64 + Sync), ) -> Self

The indexer’s: budget and batch from the environment (once per process), the process-wide watchdog, this store’s cancel flag and progress counter.

Trait Implementations§

Source§

impl<'a> Clone for ResolveLimits<'a>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for ResolveLimits<'a>

§

impl<'a> !UnwindSafe for ResolveLimits<'a>

§

impl<'a> Freeze for ResolveLimits<'a>

§

impl<'a> Send for ResolveLimits<'a>

§

impl<'a> Sync for ResolveLimits<'a>

§

impl<'a> Unpin for ResolveLimits<'a>

§

impl<'a> UnsafeUnpin for ResolveLimits<'a>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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