I am encountering intermittent [Errno 12] ENOMEM errors when assigning a key-value in Btree. Testing in a loop after importing several python classes, but before creating any objects. gc.collect() after importing each module. The free memory on the heap is >81K before assigning the key value. They key is 64B and the value is 512B
Before DB Write Memory free heap: 81216 B
Success DB Write
Before DB Write Memory free heap: 81216 B
ERROR DB Write [Errno 12] ENOMEM
Before DB Write Memory free heap: 81216 B
ERROR DB Write [Errno 12] ENOMEM
Before DB Write Memory free heap: 81216 B
Success DB Write
Before DB Write Memory free heap: 81216 B
Success DB Write
This is my funciton to write key-values to BTree.
def writeBtree(filePathDb, value, key):
success = False
key = randstr(64)
value = randstr(512)
print("DB Write: Key", key, ", Value", value)
try:
dbFile = open(filePathDb, "r+b")
except:
dbFile = open(filePathDb, "w+b")
db = btree.open(dbFile, cachesize = 1024)
gc.collect()
print("Before DB Write Memory free heap: %d B" % gc.mem_free())
try:
db[key] = value
except Exception as error:
print("ERROR DB Write ", error)
success = False
else:
print("Success DB Write ")
db.flush()
db.close()
dbFile.close()
success = True
return success