Struct CacheConfig

Source
pub struct CacheConfig { /* private fields */ }
Available on crate feature cache only.
Expand description

Global configuration for how the cache is managed

Implementations§

Source§

impl CacheConfig

Source

pub fn new() -> CacheConfig

Creates a new set of configuration which represents a disabled cache

Source

pub fn from_file(config_file: Option<&Path>) -> Result<CacheConfig, Error>

Loads cache configuration specified at path.

This method will read the file specified by path on the filesystem and attempt to load cache configuration from it. This method can also fail due to I/O errors, misconfiguration, syntax errors, etc. For expected syntax in the configuration file see the documentation online.

Passing in None loads cache configuration from the system default path. This is located, for example, on Unix at $HOME/.config/wasmtime/config.toml and is typically created with the wasmtime config new command.

§Errors

This method can fail due to any error that happens when loading the file pointed to by path and attempting to load the cache configuration.

Source

pub fn worker_event_queue_size(&self) -> u64

Returns $setting.

Panics if the cache is disabled.

Source

pub fn baseline_compression_level(&self) -> i32

Returns $setting.

Panics if the cache is disabled.

Source

pub fn optimized_compression_level(&self) -> i32

Returns $setting.

Panics if the cache is disabled.

Source

pub fn optimized_compression_usage_counter_threshold(&self) -> u64

Returns $setting.

Panics if the cache is disabled.

Source

pub fn cleanup_interval(&self) -> Duration

Returns $setting.

Panics if the cache is disabled.

Source

pub fn optimizing_compression_task_timeout(&self) -> Duration

Returns $setting.

Panics if the cache is disabled.

Source

pub fn allowed_clock_drift_for_files_from_future(&self) -> Duration

Returns $setting.

Panics if the cache is disabled.

Source

pub fn file_count_soft_limit(&self) -> u64

Returns $setting.

Panics if the cache is disabled.

Source

pub fn files_total_size_soft_limit(&self) -> u64

Returns $setting.

Panics if the cache is disabled.

Source

pub fn file_count_limit_percent_if_deleting(&self) -> u8

Returns $setting.

Panics if the cache is disabled.

Source

pub fn files_total_size_limit_percent_if_deleting(&self) -> u8

Returns $setting.

Panics if the cache is disabled.

Source

pub fn directory(&self) -> &PathBuf

Returns path to the cache directory.

Panics if the cache is disabled.

Source

pub fn with_directory( &mut self, directory: impl Into<PathBuf>, ) -> &mut CacheConfig

Specify where the cache directory is. Must be an absolute path.

Source

pub fn with_worker_event_queue_size(&mut self, size: u64) -> &mut CacheConfig

Size of cache worker event queue. If the queue is full, incoming cache usage events will be dropped.

Source

pub fn with_baseline_compression_level( &mut self, level: i32, ) -> &mut CacheConfig

Compression level used when a new cache file is being written by the cache system. Wasmtime uses zstd compression.

Source

pub fn with_optimized_compression_level( &mut self, level: i32, ) -> &mut CacheConfig

Compression level used when the cache worker decides to recompress a cache file. Wasmtime uses zstd compression.

Source

pub fn with_optimized_compression_usage_counter_threshold( &mut self, threshold: u64, ) -> &mut CacheConfig

One of the conditions for the cache worker to recompress a cache file is to have usage count of the file exceeding this threshold.

Source

pub fn with_cleanup_interval(&mut self, interval: Duration) -> &mut CacheConfig

When the cache worker is notified about a cache file being updated by the cache system and this interval has already passed since last cleaning up, the worker will attempt a new cleanup.

Source

pub fn with_optimizing_compression_task_timeout( &mut self, timeout: Duration, ) -> &mut CacheConfig

When the cache worker decides to recompress a cache file, it makes sure that no other worker has started the task for this file within the last optimizing-compression-task-timeout interval. If some worker has started working on it, other workers are skipping this task.

Source

pub fn with_allowed_clock_drift_for_files_from_future( &mut self, drift: Duration, ) -> &mut CacheConfig

§Locks

When the cache worker attempts acquiring a lock for some task, it checks if some other worker has already acquired such a lock. To be fault tolerant and eventually execute every task, the locks expire after some interval. However, because of clock drifts and different timezones, it would happen that some lock was created in the future. This setting defines a tolerance limit for these locks. If the time has been changed in the system (i.e. two years backwards), the cache system should still work properly. Thus, these locks will be treated as expired (assuming the tolerance is not too big).

§Cache files

Similarly to the locks, the cache files or their metadata might have modification time in distant future. The cache system tries to keep these files as long as possible. If the limits are not reached, the cache files will not be deleted. Otherwise, they will be treated as the oldest files, so they might survive. If the user actually uses the cache file, the modification time will be updated.

Source

pub fn with_file_count_soft_limit(&mut self, limit: u64) -> &mut CacheConfig

Soft limit for the file count in the cache directory.

This doesn’t include files with metadata. To learn more, please refer to the cache system section.

Source

pub fn with_files_total_size_soft_limit( &mut self, limit: u64, ) -> &mut CacheConfig

Soft limit for the total size* of files in the cache directory.

This doesn’t include files with metadata. To learn more, please refer to the cache system section.

*this is the file size, not the space physically occupied on the disk.

Source

pub fn with_file_count_limit_percent_if_deleting( &mut self, percent: u8, ) -> &mut CacheConfig

If file-count-soft-limit is exceeded and the cache worker performs the cleanup task, then the worker will delete some cache files, so after the task, the file count should not exceed file-count-soft-limit * file-count-limit-percent-if-deleting.

This doesn’t include files with metadata. To learn more, please refer to the cache system section.

Source

pub fn with_files_total_size_limit_percent_if_deleting( &mut self, percent: u8, ) -> &mut CacheConfig

If files-total-size-soft-limit is exceeded and cache worker performs the cleanup task, then the worker will delete some cache files, so after the task, the files total size should not exceed files-total-size-soft-limit * files-total-size-limit-percent-if-deleting.

This doesn’t include files with metadata. To learn more, please refer to the cache system section.

Trait Implementations§

Source§

impl Clone for CacheConfig

Source§

fn clone(&self) -> CacheConfig

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CacheConfig

Source§

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

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

impl Default for CacheConfig

Source§

fn default() -> CacheConfig

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

impl<'de> Deserialize<'de> for CacheConfig

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<CacheConfig, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. 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> 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, 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,