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:
Related pull requests/ Issue
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
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
PathCanonization 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:
same_file::Handle#179 (comment)[ ] Access through hardlinkNot possible since hard_link only apply to files and we track dir for envs.Related pull requests/ Issue
Flags::MdbNoSubDirflag requires target file to exists #145 (comment)same_file::Handle#179Open 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