Skip to content

hanoidb can't recover when one of the database files does not exists in merge process. #35

@brigadier

Description

@brigadier

It looks like hanoidb can't recover when one of the database A or B files does not exists in merge process.
When hanoidb files get damaged and hanoidb_merger:merge gets an error such as

23:09:07.647 [error] CRASH REPORT Process <0.8817.0> with 0 neighbours crashed with reason: no match of right hand value {error,enoent} in hanoidb_merger:merge/6 line 68
23:09:07.648 [error] Merger appears to have failed (reason: {badmatch,{error,enoent}}). Removing outfile database/client/data.hanoidb/X-9.data
23:09:07.648 [error] merge failed error:{badmatch,{error,enoent}} [{hanoidb_merger,merge,6,[{file,"src/hanoidb_merger.erl"},{line,68}]},{hanoidb_level,'-begin_merge/1-fun-0-',5,[{file,"src/hanoidb_level.erl"},{line,789}]},{proc_lib,init_p,3,[{file,"proc_lib.erl"},{line,224}]}]

it enters infinite loop in restart_merge_then_loop, keeps throwing this error and crashes the virtual machine by OOM.

To repeat the problem delete a couple of A/B database files while hanoidb runs and apply some load to the hanoidb to trigger merging

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions