Skip to content


Subversion checkout URL

You can clone with
Download ZIP


Fails when writing #18

xumingyong opened this Issue · 7 comments

3 participants


Code as following
100_000.times { |x| db.put x.to_s, "abcdefghijklmnopqrstuvwxyz"}

.../lib/leveldb/ undefined symbol: _ZN6snappy19MaxCompressedLengthEj
when more than about 79000 keys.

DB folder shows:
-rw-r--r-- 1 root root 4178034 2012-04-18 07:58 000003.log
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 000004.log
-rw-r--r-- 1 root root 0 2012-04-18 07:58 000005.sst
-rw-r--r-- 1 root root 16 2012-04-18 07:58 CURRENT
-rw-r--r-- 1 root root 0 2012-04-18 07:58 LOCK
-rw-r--r-- 1 root root 115 2012-04-18 07:58 LOG
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 MANIFEST-000002

Why ???


I guess the reason is:

the default write_buffer_size is 4MB, so when the Memory flush to disk, LevelDB call snappy function, but the LevelDB-ruby did not include the snappy lib.


It solved.

  1. download leveldb-ruby source code.

  2. modify the line12 of ./ext/leveldb/extconf.rb
    $LIBS << " -L../../leveldb -lleveldb"
    $LIBS << " -L../../leveldb -lleveldb -lsnappy"

  3. run
    # rake -T spec
    # ruby setup.rb
    # cd /usr/local/lib/site-ruby/1.9.1/i686-linux/
    # cp ../leveldb/

  4. copy to above leveldb path.

  5. try the test code.



Thanks for the report. But I can't reproduce this. What version of the leveldb-ruby gem do you have installed?


The gem version is 5975fd7

My test enviroment is UNBUNTU 11.10


Can you try the latest master? I've updated to the latest leveldb code and this solved the snappy problem for some people (e.g. #20)


1. Try the new rubyforge gem

I tried the :

gem install level-ruby

again, something make me confused, the ruby report
in put: wrong argument type LevelDB::DB (expected Data) (TypeError)

but your test file works.

2. Try the latest master, and build it manually


rake gem
cp ./i686-linux/ ./leveldb/

.../lib/leveldb/ undefined symbol: _ZN6snappy19MaxCompressedLengthEj

It seems it does not work, I guess the g++ command need -lsnappy switch in Makefile of google leveldb source files.


I don't know if you're still experiencing this problem, but I solved this by just remove snappy/leveldb from my package manager, then reinstalled the gem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.