reverbrain / eblob

Eblob is an append-only low-level IO library, which saves data in blob files. Created as low-level backend for elliptics
GNU Lesser General Public License v3.0
104 stars 29 forks source link

Plain write incorrectly moves key from blob which is under defragmentation. #138

Closed shaitan closed 8 years ago

shaitan commented 8 years ago

If plain write is called for a key from blob which is under defragmentation now, eblob moves it to the open blob. Currently, eblob distorts/loses prepared size of the key while such moving that leads to failures of following plain writes.

From the log you can see that eblob_plain_writev calls eblob_write_prepare_disk_ll with incorrect prepare_disk_size.