-
Notifications
You must be signed in to change notification settings - Fork 63
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Heed strive to pursue opening LMDB safely, so a database environment must be opened only once inside a process address space.
Any subsequent opening shall return the corresponding already opened environment.
It was done with Path
Canonization but it fails to tackle symlinks, hardlinks and renaming/move of the whole database environment (both locks and database).
In an ideal world the environment already open checking must prevail:
- The solution should avoid keeping the environment "open" aka holding a file descriptor elsewhere see [Stale] Compare identical environments by using a
same_file::Handle
#179 (comment) - First opening
- Opening with the same path
- Access through symlink
[ ] Access through hardlinkNot possible since hard_link only apply to files and we track dir for envs.- Renaming
Related pull requests/ Issue
- Idea based on Env open with
Flags::MdbNoSubDir
flag requires target file to exists #145 (comment) - [Stale] Compare identical environments by using a
same_file::Handle
#179 - LMDB assumptions: Make transaction opening more safe #20 (comment)
Open question
Is Canonization still pertinant if we check already-openned by Unix: (device/inode) Windows: (Driver/fileID) through same_file?
How to do it compatible with windows without lefting file open.
Problems
Lmdb rely on Unixes on posix filelocking through fnctl
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request