确定mapkeeper使用的leverdb库路径
Posted longbigfish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了确定mapkeeper使用的leverdb库路径相关的知识,希望对你有一定的参考价值。
目前libleveldb的a或so库有三个路径,/usr/lib, /usr/lib/x86_64-linux-gnu , /usr/local/lib
使用
ls -d -1 /usr/lib/* /usr/lib/x86_64-linux-gnu/* /usr/local/lib/* |grep leveldb
列出他们的全路径。
(1)/usr/lib/x86_64-linux-gnu/libleveldb.a会起作用,注意重新编译时清空缓存已保证结果正确。编译出的
(2)/usr/lib/x86_64-linux-gnu/xxxlibleveldb.so不起作用
(3)/usr/local/lib/libleveldb.a会起作用,编译出的mapkeeper_leveldb大小为945KB。
leveldb1.8编译出的a库大小为797K, leveldb2.0编译出的a库为815K
*********注意***********, 如果mapkeeper服务端leveldb提示status: IO error: lock data/usertable/LOCK: already held by process,则操作是不成功的,即使ycsb这端显示成功。实际上leveldb数据库里没有任何变动。发现这一点是因为发现leveldb库的put函数没有被调用。
正常情况下,leveldb插入函数被调用的顺序是
dbimpl.cc, DBImpl::Put,begin
dbimpl.cc, DB::Put, begin
dbimpl.cc, DBImpl::Write begin
以上是关于确定mapkeeper使用的leverdb库路径的主要内容,如果未能解决你的问题,请参考以下文章