Skip to main content

FlowConfig

Struct FlowConfig 

Source
pub struct FlowConfig {
    pub active_step_search_mode: Option<i32>,
    pub step_durability: Option<i32>,
    pub worker_target: Option<WorkerTarget>,
    pub attribute_store_names: Option<AttributeStoreNames>,
    pub history_window_events: Option<i32>,
    pub delete_expired_history_objects: Option<bool>,
    pub offload_history: Option<bool>,
}

Fields§

§active_step_search_mode: Option<i32>§step_durability: Option<i32>§worker_target: Option<WorkerTarget>§attribute_store_names: Option<AttributeStoreNames>

Present empty disables future synchronization; non-empty selects Server-configured stores.

§history_window_events: Option<i32>

Approximate number of the newest history events that the run keeps for history reads and Time Travel.

Use it to keep more history for a run that you inspect or travel back in often, or less history for a run that writes many events and needs less disk. Leave it unset to use the server’s history.windowEvents setting, which defaults to 10000.

The window counts history events. A command that changes the Flow but records no event counts as one event. When the run holds more than this many events plus one prune chunk, Dex prunes the oldest events until about this many remain. The prune chunk is the smaller of the server’s history.pruneChunkSize setting and one tenth of this window, and at least one. Pruning stops only between commands, so a run keeps slightly more or fewer events than the value. The first event of the run is always kept, and ResetFlow to the beginning of the run always works. GetHistoryEvents no longer returns pruned events, and Time Travel targets only commands inside the window.

Set it at start through FlowStartOptions.flow_config_override, or change it on a running Flow with UpdateFlowConfig. A smaller value takes effect at the run’s next pruning. A larger value keeps more of the events recorded afterwards; pruned events never come back. Once set, the value can be changed but not cleared back to the server default. A child Flow inherits it from its parent unless its own override sets it.

The value must be positive and at most the server’s history.maxWindowEvents setting, which defaults to 100000. StartFlow and UpdateFlowConfig reject other values with INVALID_ARGUMENT. A Step result that starts a SubFlow with such an override is an invalid Worker response: the Step attempt fails and is retried under the Step’s retry policy.

Since server-zd 0.1.21.

§delete_expired_history_objects: Option<bool>

Deprecated: runs that start with server-zd 0.1.23 or later ignore it.

Such a run, when it offloads its history, always deletes the object of a history segment from object storage about one hour after the history window passes the whole segment. StartFlow, SubFlow overrides, and UpdateFlowConfig still accept the field, so existing clients keep working; StartFlow drops it. A run that started before server-zd 0.1.23 still follows it, and UpdateFlowConfig can still change it for that run.

In server-zd 0.1.22 it chose, for one run, whether those objects were deleted or kept until the run was deleted after its retention.

Since server-zd 0.1.22. Deprecated in server-zd 0.1.23.

§offload_history: Option<bool>

Whether Dex offloads the run’s history to object storage.

An offloaded run uploads its history to object storage in segment objects. Once a segment is uploaded and a grace period has passed, Dex deletes its history records and superseded values from the local disk, and history reads fetch them from object storage. When the history window passes a whole segment, Dex deletes the segment’s object about one hour later. A run that does not offload keeps its history on the local disk and never writes a history object. The history window applies to both: Dex prunes the oldest events and deletes the superseded values that the window passed.

Leave it unset, which means true, for most runs. A long-running run then keeps only its newest history and current state on the local disk. Set it to false for many short runs that close soon after they start. Each offloaded run writes at least one history object when it closes, and deletes it when its retention ends, so short runs at a high rate add object storage requests while their small history costs little local disk.

A run that does not offload keeps every superseded value that its history window covers on the local disk, with no byte limit. Rewriting large values can then use much local disk. Keep offload for such a run, or give it a smaller history_window_events.

Set it only when the Flow starts, through FlowStartOptions.flow_config_override, or for a child Flow through the SubFlow’s flow_config_override. A child Flow inherits it from its parent unless its own override sets it. The run keeps the value for its whole life: UpdateFlowConfig rejects a request that sets it with INVALID_ARGUMENT. Runs that started before server-zd 0.1.23 keep the history offload behavior that their server gave them.

Since server-zd 0.1.23.

Implementations§

Source§

impl FlowConfig

Source

pub fn active_step_search_mode(&self) -> ActiveStepSearchMode

Returns the enum value of active_step_search_mode, or the default if the field is unset or set to an invalid enum value.

Source

pub fn set_active_step_search_mode(&mut self, value: ActiveStepSearchMode)

Sets active_step_search_mode to the provided enum value.

Source

pub fn step_durability(&self) -> StepDurability

Returns the enum value of step_durability, or the default if the field is unset or set to an invalid enum value.

Source

pub fn set_step_durability(&mut self, value: StepDurability)

Sets step_durability to the provided enum value.

Source

pub fn history_window_events(&self) -> i32

Returns the value of history_window_events, or the default value if history_window_events is unset.

Source

pub fn delete_expired_history_objects(&self) -> bool

Returns the value of delete_expired_history_objects, or the default value if delete_expired_history_objects is unset.

Source

pub fn offload_history(&self) -> bool

Returns the value of offload_history, or the default value if offload_history is unset.

Trait Implementations§

Source§

impl Clone for FlowConfig

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

impl Debug for FlowConfig

Source§

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

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

impl Default for FlowConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for FlowConfig

Source§

impl Hash for FlowConfig

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for FlowConfig

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8> ⓘ
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for FlowConfig

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for FlowConfig

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> 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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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