Support memory/storage-pressure-based eviction for DescriptorSets, in addition to _expiration TTL
- Dominant language
- C++
- Stars
- 93
- Forks
- 34
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
VDMS currently supports descriptor expiration via the `_expiration `property (documented under "Auto-Deletion of Expired Data"), which deletes a descriptor once a fixed TTL has elapsed. This is purely time-based — it has no awareness of actual memory/storage usage.
In our use case (a re-identification pipeline continuously writing embedding vectors from a live video feed), this means we have to pick a TTL conservative enough to bound worst-case growth under peak ingest rate. In practice that means:
- Under normal/light load, descriptors are deleted earlier than necessary, even though there's plenty of headroom.
- Under a sustained burst (e.g. a crowded scene with many new tracks), storage can still grow past whatever memory budget we actually have, since nothing reacts to real usage — only to elapsed time.
**Describe the solution you'd like**
A pressure-based eviction mechanism for DescriptorSets that's independent of (and can work alongside) _expiration, for example:
- A configurable max size (bytes) or max count per DescriptorSet, with LRU/FIFO eviction of the oldest entries once the limit is hit.
- Or a global memory-pressure threshold that triggers eviction of the least-recently-used descriptors across sets when the server approaches a configured memory ceiling.
**Additional context**
Currently using a fixed `descriptor_ttl_secs ` via `_expiration` on every `AddDescriptor` call, sized for worst-case ingest. This works but trades off either premature deletion (light load) or insufficient bounding (burst load) — there's no setting that adapts to actual usage.
Contributor guide
Research direction
The payload names AddDescriptor and the _expiration property as entry points; begin by tracing how DescriptorSets currently apply TTL eviction. The issue does not identify files or tests, and completion depends on choosing and specifying a pressure policy, configuration, eviction behavior, and how it coexists with TTL.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100