fix(rustdb-storage): run collection compaction during file storage initialization after crashes
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-04-05 - 2.5.9 - fix(rustdb-storage)
|
||||||
|
run collection compaction during file storage initialization after crashes
|
||||||
|
|
||||||
|
- Triggers compaction for all loaded collections before starting the periodic background compaction task.
|
||||||
|
- Helps clean up dead weight left from before a crash during startup.
|
||||||
|
|
||||||
## 2026-04-05 - 2.5.8 - fix(rustdb-storage)
|
## 2026-04-05 - 2.5.8 - fix(rustdb-storage)
|
||||||
detect stale hint files using data file size metadata and add restart persistence regression tests
|
detect stale hint files using data file size metadata and add restart persistence regression tests
|
||||||
|
|
||||||
|
|||||||
@@ -504,6 +504,13 @@ impl StorageAdapter for FileStorageAdapter {
|
|||||||
"FileStorageAdapter initialization complete"
|
"FileStorageAdapter initialization complete"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Run compaction on all collections that need it (dead weight from before crash)
|
||||||
|
for entry in self.collections.iter() {
|
||||||
|
let state = entry.value();
|
||||||
|
let _guard = state.write_lock.lock().unwrap();
|
||||||
|
state.try_compact();
|
||||||
|
}
|
||||||
|
|
||||||
// Start periodic compaction task (runs every 24 hours)
|
// Start periodic compaction task (runs every 24 hours)
|
||||||
{
|
{
|
||||||
let collections = self.collections.clone();
|
let collections = self.collections.clone();
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartdb',
|
name: '@push.rocks/smartdb',
|
||||||
version: '2.5.8',
|
version: '2.5.9',
|
||||||
description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
|
description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user