This version introduces substantial performance improvements to PUSH requests.
While most improvements should benefit all Sonic users, some new experimental features were introduced to address specific high-scale needs which shouldn’t be a concern for most users. For now those API introductions are hidden behind the experimental-api feature flag, which won’t be enabled in official builds of Sonic. We’ll take those out of the experimental stage after using it in production and confirming that the chosen design is a good long-term choice.
Changes
Performance improvements:
- perf(core): Reduce locks contention caused by
IIDIncr(inf7de118) - perf(core): Use a single
rocksdb::WriteBatchper Sonic request (in606cb31,981d1bc) - perf(core): Use merge operators for
TermToIIDsandIIDToTerms(inb5921a1,6bd24cb) - perf(core): Perform fewer merge operations by writing less often (in
3207a35) - perf(core): Avoid
get_meta_to_valueread inauto_increment_iid(in79fa14f) - perf(core): And various other performance improvements
Dependency updates:
- deps(core): Bump
rocksdbfrom0.24to0.25(in80c3827) - deps(server): Bump
clapfrom4.6.6to4.6.7(in2e153c4) - deps(server): Update locked
chacha20version (in6fab659) - deps(server): Enable
rocksdb/jemallocwhenallocator-jemallocis enabled (in67624ac)
New Features
- feat(server): Add experimental
TRIGGER compact(inba4e974) - feat(server): Add experimental
CONFIGcontrol command (#400) (ina7a5497,03a2a4e) - feat(core): Add experimental
NEWflag toPUSH(inf94cba0) - feat(core):
impl Debug for sonic::Config(in6464cbf)
Bug Fixes
- fix(server): Preserve escaped character after unrecognized escapes (#398) (in
e6a72da,ad5914b,85ab93e) - fix(server): Fix panic when client closes connection before
ENDED(in80c3665) - fix(core): Fix
max_flushes(in36de4c5)