Skip to content

Commit a569182

Browse files
authored
Merge pull request #363 from influxdata/tm/open-at
feat: implement & test `open_at`
2 parents 0454c02 + 8bdddc1 commit a569182

6 files changed

Lines changed: 1051 additions & 257 deletions

File tree

host/src/component.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ impl WasmComponentInstance {
297297
let component = component.hydrate(&engine)?;
298298

299299
// resource/mem limiter
300-
let mut limiter = Limiter::new(permissions.resource_limits.clone(), memory_pool);
300+
let limiter = Limiter::new(permissions.resource_limits.clone(), memory_pool);
301301

302302
// Create in-memory VFS
303303
let vfs_state = VfsState::new(permissions.vfs.clone(), limiter.clone());

host/src/limiter.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ impl Limiter {
7777
}
7878

7979
/// Grow memory usage.
80-
pub(crate) fn grow(&mut self, bytes: usize) -> Result<(), GrowthError> {
80+
pub(crate) fn grow(&self, bytes: usize) -> Result<(), GrowthError> {
8181
let mut self_guard = self
8282
.memory_reservation
8383
.lock()
@@ -88,6 +88,18 @@ impl Limiter {
8888
})
8989
}
9090

91+
/// Shrink memory usage.
92+
pub(crate) fn shrink(&self, bytes: usize) -> Result<usize, GrowthError> {
93+
let mut self_guard = self
94+
.memory_reservation
95+
.lock()
96+
.expect("memory reservation lock poisoned");
97+
self_guard.try_shrink(bytes).map_err(|e| {
98+
log::debug!("failed to shrink memory: {e}");
99+
GrowthError(e)
100+
})
101+
}
102+
91103
/// Get current allocation size.
92104
pub(crate) fn size(&self) -> usize {
93105
self.memory_reservation

0 commit comments

Comments
 (0)