Btree Memory Errors

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

Hi, I don’t have experience using the btree module.

You may wish to ask the micropython community directly: micropython

The discord is quite lively.