Commit Graph

9 Commits

Author SHA1 Message Date
Haode Du a402dc715f
[Store] Notify master on disk eviction to fix stale metadata (#1549) 2026-03-04 16:48:05 +08:00
dongb0 3897e1b53e
[Store]add unit test for exception handling of RealClient (#1546) 2026-02-22 16:02:01 +07:00
Mahesh Bapatu b84aca829a
[Store] Optimize BucketStorageBackend for reduced lock contention and add delete safety (#1456) 2026-02-11 11:15:51 +08:00
Mahesh Bapatu 4591728264
[Store] - Implement partial success handling in BatchOffload (#1319)
* feat: Add deterministic test failure injection for partial success testing

- Add SetTestFailurePredicate() virtual method to StorageBackendInterface
- Implement test failure injection in StorageBackendAdaptor and OffsetAllocatorStorageBackend
- Refactor TestPartialSuccessBehavior helper to use predicate-based injection
- Remove repetitive key creation code (use loops)
- Add PartialSuccess tests for both Adaptor and OffsetAllocator backends
- Update OutOfSpace test to handle partial success semantics (value==0)

This enables deterministic testing of partial success behavior without
relying on approximate space exhaustion, making tests more reliable.

* Addressed review comments
2026-01-07 13:22:23 +08:00
Mahesh Bapatu 1719043de4
[Store]: Add OffsetAllocator disk backend with lock-striped metadata + refcounted extents. (#1284) 2025-12-31 00:28:55 +08:00
zhangzuo21 926c63aec8
[Store] feat: Implement a unified storage interface to simplify integration and extension (#1185) 2025-12-17 22:33:05 +08:00
zhuxinjie-nz 455e11a1dc
[Store] feat: Implement a FileStorage component to manage the lifecycle of key-value data (#1031) 2025-12-09 15:00:57 +08:00
maheshrbapatu ba5e2bac24
[Store] orphaned bucket data files check on init (#1140)
* [mooncake-store]: prevent orphaned bucket data files from leaking disk space.

Add cleanup mechanism for bucket data files that are left orphaned when
the process crashes between writing the data file and its metadata file.

Problem:
- BucketStorageBackend writes data file first, then .meta file
- If crash/failure occurs between these steps, data file is orphaned
- Init() only scans .meta files, never discovers orphans
- Orphaned files accumulate indefinitely, leaking disk space

Solution:
- Add immediate cleanup in WriteBucket() when metadata write fails
- Add orphan detection during Init() to clean up past crashes
- Make cleanup opt-in (disabled by default) via constructor flag
- Identify orphans by: numeric filename, no extension, no .meta pair

Changes:
- BucketStorageBackend: Add enable_orphan_cleanup parameter (default: false)
- WriteBucket(): Clean up data file if StoreBucketMetadata() fails
- Init(): Scan for and remove orphaned data files when enabled
- Add comprehensive test coverage for orphan cleanup

* [mooncake-store]: prevent orphaned bucket data files from leaking disk space.

Add cleanup mechanism for bucket data files that are left orphaned when
the process crashes between writing the data file and its metadata file.

Problem:
- BucketStorageBackend writes data file first, then .meta file
- If crash/failure occurs between these steps, data file is orphaned
- Init() only scans .meta files, never discovers orphans
- Orphaned files accumulate indefinitely, leaking disk space

Solution:
- Add immediate cleanup in WriteBucket() when metadata write fails
- Add orphan detection during Init() to clean up past crashes
- Make cleanup opt-in (disabled by default) via constructor flag
- Identify orphans by: numeric filename, no extension, no .meta pair

Changes:
- BucketStorageBackend: Add enable_orphan_cleanup parameter (default: false)
- WriteBucket(): Clean up data file if StoreBucketMetadata() fails
- Init(): Scan for and remove orphaned data files when enabled
- Add comprehensive test coverage for orphan cleanup

* [mooncake-store]: prevent orphaned bucket data files from leaking disk space.

Add cleanup mechanism for bucket data files that are left orphaned when
the process crashes between writing the data file and its metadata file.

Problem:
- BucketStorageBackend writes data file first, then .meta file
- If crash/failure occurs between these steps, data file is orphaned
- Init() only scans .meta files, never discovers orphans
- Orphaned files accumulate indefinitely, leaking disk space

Solution:
- Add immediate cleanup in WriteBucket() when metadata write fails
- Add orphan detection during Init() to clean up past crashes
- Make cleanup opt-in (disabled by default) via constructor flag
- Identify orphans by: numeric filename, no extension, no .meta pair

Changes:
- BucketStorageBackend: Add enable_orphan_cleanup parameter (default: false)
- WriteBucket(): Clean up data file if StoreBucketMetadata() fails
- Init(): Scan for and remove orphaned data files when enabled
- Add comprehensive test coverage for orphan cleanup

* [mooncake-store]: prevent orphaned bucket data files from leaking disk space.

Add cleanup mechanism for bucket data files that are left orphaned when
the process crashes between writing the data file and its metadata file.

Problem:
- BucketStorageBackend writes data file first, then .meta file
- If crash/failure occurs between these steps, data file is orphaned
- Init() only scans .meta files, never discovers orphans
- Orphaned files accumulate indefinitely, leaking disk space

Solution:
- Add immediate cleanup in WriteBucket() when metadata write fails
- Add orphan detection during Init() to clean up past crashes
- Make cleanup opt-in (disabled by default) via constructor flag
- Identify orphans by: numeric filename, no extension, no .meta pair

Changes:
- BucketStorageBackend: Add enable_orphan_cleanup parameter (default: false)
- WriteBucket(): Clean up data file if StoreBucketMetadata() fails
- Init(): Scan for and remove orphaned data files when enabled
- Add comprehensive test coverage for orphan cleanup

* [mooncake-store]: prevent orphaned bucket data files from leaking disk space.

Add cleanup mechanism for bucket data files that are left orphaned when
the process crashes between writing the data file and its metadata file.

Problem:
- BucketStorageBackend writes data file first, then .meta file
- If crash/failure occurs between these steps, data file is orphaned
- Init() only scans .meta files, never discovers orphans
- Orphaned files accumulate indefinitely, leaking disk space

Solution:
- Add immediate cleanup in WriteBucket() when metadata write fails
- Add orphan detection during Init() to clean up past crashes
- Make cleanup opt-in (disabled by default) via constructor flag
- Identify orphans by: numeric filename, no extension, no .meta pair

Changes:
- BucketStorageBackend: Add enable_orphan_cleanup parameter (default: false)
- WriteBucket(): Clean up data file if StoreBucketMetadata() fails
- Init(): Scan for and remove orphaned data files when enabled
- Add comprehensive test coverage for orphan cleanup

---------

Co-authored-by: Mahesh <maheshreddy.bapatu@nutanix.com>
2025-12-03 12:17:14 +08:00
楠志 2cf86bf385
[Store] Add BucketStorageBackend (#968) 2025-10-31 10:19:05 +08:00