-
Notifications
You must be signed in to change notification settings - Fork 970
Description
Description
All current releases of LMDB (up to 0.9.29) require the full size of the database to be allocated on Windows. This means that the slasher will create a 256GB file immediately upon starting!
Details
It turns out the LMDB codebase has two main branches:
mdb.RE/0.9: stable code deemed worthy of release as part of the v0.9.x seriesmdb.master: experimental/under-development code
The bug we are interested in patching is ITS#8324, which causes LMDB to pre-allocate the entirety of the mapped file on Windows. The bugfix is unfortunately only available on mdb.master at the moment, so no stable release of LMDB exists for us to target. I confirmed that using mdb.master resolves the issue, and the tests pass. For reference, this is the patch for Cargo.toml:
[patch]
[patch.crates-io]
lmdb-sys = { git = "https://github.com/michaelsproul/lmdb-rs", branch = "windows-fix-track-master" }We can't use this solution in prod because we don't know what gnarly bugs may be lurking in the weeds of LMDB's dev branch. Instead we must migrate to a suitable LMDB release once one becomes available.
The release we want should include NtCreateSection: https://github.com/LMDB/lmdb/blob/4b6154340c27d03592b8824646a3bc4eb7ab61f5/libraries/liblmdb/mdb.c#L4488