Skip to content

Figure out the mechanism by which a map resize will be made in all cases in lmdb #644

Open
@TheQuantumPhysicist

Description

@TheQuantumPhysicist

While the current lmdb backend resizes in most cases automatically, there's a chance for MDB_MAP_FULL error to be returned whether in:

  • writes
  • commits

and we should be able to handle these cases gracefully and not halt the program execution. Currently, in our code, we're not fully invulnerable to that problem. For example, in chainstate, when attempting to write a new block, we just "retry" if we get a recoverable error. However, if we get an MDB_MAP_FULL error, we should make an attempt to resize the database.

Attempts are being made to automate this, but this should be checked in LmdbImpl again later when the node is ready.

Metadata

Metadata

Assignees

No one assigned

    Labels

    lmdbEverything related to lmdb key-value storestorageEverything related to storage, whether it's blockchain, wallet or otherwisetestingTests & testing infrastructure

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions