mirage / irmin

Irmin is a distributed database that follows the same design principles as Git
https://irmin.org
ISC License
1.84k stars 153 forks source link

irmin-pack: fast migration to lower by copy #2205

Closed art-w closed 1 year ago

art-w commented 1 year ago

(builds on top of #2204)

A draft for the fast migration when enabling lower volumes from an existing store (which only had an upper suffix file, never garbage collected or chunk splitted). I went with a file copy rather than a move when initializing the lower volume to avoid any surprise if the operation fails midway... it should be as efficient as a rename when happening on the same hard drive anyway :) But the code is still missing some way of recovering and cleaning up the drive if the migration fails!

codecov-commenter commented 1 year ago

Codecov Report

Merging #2205 (15e299e) into main (101dccf) will increase coverage by 0.05%. The diff coverage is 76.36%.

:exclamation: Current head 15e299e differs from pull request most recent head d67aaec. Consider uploading reports for the commit d67aaec to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

@@            Coverage Diff             @@
##             main    #2205      +/-   ##
==========================================
+ Coverage   67.95%   68.01%   +0.05%     
==========================================
  Files         135      135              
  Lines       16435    16472      +37     
==========================================
+ Hits        11168    11203      +35     
- Misses       5267     5269       +2     
Impacted Files Coverage Δ
src/irmin-pack/unix/control_file_intf.ml 82.14% <ø> (ø)
src/irmin-pack/unix/errors.ml 28.88% <ø> (ø)
src/irmin-pack/unix/io_errors.ml 58.33% <ø> (ø)
src/irmin-pack/unix/file_manager.ml 84.67% <75.75%> (-0.61%) :arrow_down:
src/irmin-pack/unix/lower.ml 63.69% <77.27%> (+5.48%) :arrow_up:
src/irmin-fs/unix/irmin_fs_unix.ml 67.74% <0.00%> (-0.65%) :arrow_down:
src/irmin-test/store.ml 94.89% <0.00%> (-0.06%) :arrow_down:
src/irmin-pack/unix/sparse_file.ml 77.98% <0.00%> (+1.83%) :arrow_up:
src/irmin-pack/unix/utils.ml 93.10% <0.00%> (+3.44%) :arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more