Removed columns aka types. This change greatly simplifies code base, speeds it up and also allows us to remove substantial amounts of code lines;
Removed near useless compression. Unlike most common block-based approaches we've used record based compression which is ineffective on small records and introduces too much overhead on big ones;
Introduce scatter/gather interface which resembles POSIX writev(2), but extends it by adding scatter to write path. This will simplify implementation of elliptics extended metadata;
Introduced new extensible statistics with decent API. Now we have three kinds of stats:
global per-backend, like number of hashed entries,
Types removal allowed us to remove most of complexity from in-memory cache because now there can be only one entry with given key;
Tests and CI improvements. We are now testing three write along with three read paths. Also added tests for BLOB_DISK_CTL_APPEND;
Deprecated config options: bsize and cache_size;
Deprecated BLOB_DISK_CTL_WRITE_RETURN/BLOB_DISK_CTL_OVERWRITE
flags and EBLOB_OVERWRITE_COMMITS/EBLOB_TRY_OVERWRITE
config flags;
Cleaned up bctl structure from obsoleted fields;
Fixed update of data file index. Now both index file and data file are updated simultaneously. This fixed 3-stage write tests with enabled data-sort;
Less extensive logging. Either decreased severity or removed some log messages all along;
Speedup data-sort by utilizing new statistics APIs instead of running iterator before defrag;
Speedup eblob_read_data(). Removal of compression allowed us to remove now useless map/unmap calls.
Fixed Clang static analyzer and asan warnings.
NB! This commit breaks both ABI and API. All applications needs to be recompiled, most of them need to be rewritten
PS. Pull request with Ellitics backend compatibility with this eblob version will follow soon.
type
s. This change greatly simplifies code base, speeds it up and also allows us to remove substantial amounts of code lines;writev(2)
, but extends it by adding scatter to write path. This will simplify implementation of elliptics extended metadata;Also
.stat
file now provides far more extensive stats, e.g.: https://gist.github.com/SaveTheRbtz/5846362;BLOB_DISK_CTL_APPEND
;bsize
andcache_size
;BLOB_DISK_CTL_WRITE_RETURN
/BLOB_DISK_CTL_OVERWRITE
flags andEBLOB_OVERWRITE_COMMITS
/EBLOB_TRY_OVERWRITE
config flags;bctl
structure from obsoleted fields;data-sort
;data-sort
by utilizing new statistics APIs instead of running iterator before defrag;eblob_read_data()
. Removal of compression allowed us to remove now uselessmap
/unmap
calls.asan
warnings.NB! This commit breaks both ABI and API. All applications needs to be recompiled, most of them need to be rewritten PS. Pull request with Ellitics backend compatibility with this eblob version will follow soon.