Skip to content

feat: Add cache ownership tracking and lazy segment remapping#6

Merged
nknize merged 1 commit intomainfrom
feature/cacheOwnership
Feb 2, 2026
Merged

feat: Add cache ownership tracking and lazy segment remapping#6
nknize merged 1 commit intomainfrom
feature/cacheOwnership

Conversation

@nknize
Copy link
Member

@nknize nknize commented Feb 2, 2026

  • Add owns_object flag to LRUCacheNode for LRUDeleteObject policy
    • Only delete objects when owns_object=true (heap-allocated)
    • Prevents undefined behavior when caching mmap'd memory
  • Add add(id, object, owns_object) overloads to LRUCache and ShardedLRUCache
  • Add lookup_or_attach(key, record, owns_object) overload to ShardedLRUCache
  • Implement lazy segment remapping in SegmentAllocator
    • Release pins when segments are not actively accessed
    • Re-map on demand with thread-safe locking
    • Add release_cold_pins() for proactive memory release
  • Add SegmentAllocator destructor to properly release pins on shutdown
  • Add ServerlessFieldScaling test (100 fields, bounded 4GB mmap)

Test results: 100 fields with 81 MB RSS, 3.84 GB mmap (bounded), 0 crashes

  - Add `owns_object` flag to LRUCacheNode for LRUDeleteObject policy
    - Only delete objects when owns_object=true (heap-allocated)
    - Prevents undefined behavior when caching mmap'd memory
  - Add `add(id, object, owns_object)` overloads to LRUCache and ShardedLRUCache
  - Add `lookup_or_attach(key, record, owns_object)` overload to ShardedLRUCache
  - Implement lazy segment remapping in SegmentAllocator
    - Release pins when segments are not actively accessed
    - Re-map on demand with thread-safe locking
    - Add release_cold_pins() for proactive memory release
  - Add SegmentAllocator destructor to properly release pins on shutdown
  - Add ServerlessFieldScaling test (100 fields, bounded 4GB mmap)

  Test results: 100 fields with 81 MB RSS, 3.84 GB mmap (bounded), 0 crashes

Signed-off-by: Nicholas Walter Knize <nknize@apache.org>
@nknize nknize added the feature label Feb 2, 2026
@nknize nknize merged commit 67c0e71 into main Feb 2, 2026
5 of 10 checks passed
@nknize nknize deleted the feature/cacheOwnership branch February 2, 2026 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant