diff --git a/docs/changelogs/v0.40.md b/docs/changelogs/v0.40.md index 147dc0511..adc7f252c 100644 --- a/docs/changelogs/v0.40.md +++ b/docs/changelogs/v0.40.md @@ -10,7 +10,7 @@ This release was brought to you by the [Shipyard](https://ipshipyard.com/) team. - [Overview](#overview) - [๐Ÿ”ฆ Highlights](#-highlights) - - [Atomic batch writes in flatfs datastore](#atomic-batch-writes-in-flatfs-datastore) + - [๐Ÿงน Automatic cleanup of interrupted imports](#-automatic-cleanup-of-interrupted-imports) - [Routing V1 HTTP API now exposed by default](#routing-v1-http-api-now-exposed-by-default) - [Track total size when adding pins](#track-total-size-when-adding-pins) - [๐Ÿš‡ Improved `ipfs p2p` tunnels with foreground mode](#-improved-ipfs-p2p-tunnels-with-foreground-mode) @@ -25,15 +25,13 @@ This release was brought to you by the [Shipyard](https://ipshipyard.com/) team. ### ๐Ÿ”ฆ Highlights -#### Atomic batch writes in flatfs datastore +#### ๐Ÿงน Automatic cleanup of interrupted imports -The flatfs datastore batch implementation has been rewritten to use atomic operations. Blocks are now written to a temporary directory first and renamed to their final locations only on commit. +If you cancel `ipfs add` or `ipfs dag import` mid-operation, Kubo now automatically cleans up incomplete data on the next daemon start. Previously, interrupted imports would leave orphan blocks in your repository that were difficult to identify and remove without pins and running explicit garbage collection. -If kubo is interrupted during `ipfs add` or `ipfs dag import`, uncommitted blocks are automatically cleaned up on the next start, preventing orphan blocks from polluting the datastore. Previously, interrupted imports could leave partial data behind that was difficult to identify and clean up. +Batch operations also use less memory now. Block data is written to disk immediately rather than held in RAM until the batch commits. -This also reduces memory usage during batch operations, as blocks are written to disk asynchronously instead of being buffered in RAM. - -See [go-ds-flatfs#142](https://github.com/ipfs/go-ds-flatfs/pull/142) for implementation details. +Under the hood, the block storage layer (flatfs) was rewritten to use atomic batch operations via a temporary staging directory. See [go-ds-flatfs#142](https://github.com/ipfs/go-ds-flatfs/pull/142) for details. #### Routing V1 HTTP API now exposed by default