parameter pack和递归模板展开

需求

做一个libevent的wrapper,有个需求,用户对某个fd的可读事件感兴趣,要求在产生这个事件时,调用他传入的某个可调用对象及其参数。 libevent的回调类似:void LibeventCallback(int fd, short flag, void* arg);

要求: 1、用户传入的可调用对象fn,拿的参数是可变的,第一个参数为某个特定类型,用于感知fd和flag,后续其他为用户自定义参数

wal recovery would cleanup at least the first WAL

这段时间跟同事尝试修复长期以来项目中遗留的Rocksdb的Case,遇到些有意思的Case,这里记录一下。

some tips for rocksdb case fixing

  1. 对于不支持-march=native环境的,可以编译时export USE_SSE=1.避免类似no such instruction: shlx %r13,%rax,%rax'`的问题。

  2. 对于rocksdb的测试case,想保留测试db的,可以搞个KEEP_DB环境变量。测试类会根据这个环境变量决定是否清理测试DB。

some details about rocksdb::LRUCache

最近有同事找我讨论问题,觉得挺有趣的记录一下。

rocksdb::LRUHandle::key()的历史

第一个问题是rocksdb::LRUHandle::key(), 这个函数返回该handle内部存储的key,但为啥某些情况下却返回value呢?