[Metakit] memory leak?

zooko at zooko.com zooko at zooko.com
Sun Jan 22 17:41:26 CET 2006


Dear jcw:

Thank you especially for metakit!

> No.  It's because all changes are buffered in memory until commit.   
> To avoid it, insert "db.commit()", say every 100,000 iterations.

I suspected this might be the case, so I already tried this before reporting my
simplest failing script.  Here is a slightly less simple script, which calls
store.commit() every 100,000 iterations, but uses unlimited memory.

Regards,

Zooko

------- 
#!/usr/bin/env python

import os

import metakit
print metakit, metakit.__version__

store = metakit.storage("leakcheck", 1)
db = store.getas("test_db[k:B]")
    
for i in xrange(2**50):
    k = os.urandom(20)
    db.append(k=k)
    db.delete(db.find(k=k))
    if i%100000 == 0:
        store.commit()


More information about the Metakit mailing list